我仍然是蟒蛇新手,并试图教自己,同时打算制作一个FIFA 14 autobuyer。我一直在使用已经制作的图书馆https://github.com/Fire30/Fifa14Client
我正在尝试做的是根据搜索特定卡时获得的信息制作字典
用于搜索卡的函数位于WebAppFunctioner.py文件中,并且是
def search(self, type="player", lev="gold", pos="CAM", num=1, team="101059",
macr="", micr="", minb="", nat="", maxb="",
playStyle="", leag="", start=50, cat="",
definitionId="", maskedDefId=""):
the_url = self.TRANSFER_URL % (self.platform_string,type, lev, pos, num, team, macr, micr, minb, nat, maxb,
playStyle, leag, start, cat, definitionId, maskedDefId)
r = requests.post(the_url, headers=self.get_headers('GET'))
try:
json = r.json()
except:
raise BadRequestException("Could not complete search. No JSON object could be decoded")
if 'auctionInfo' in json:
card_list = json['auctionInfo']
return [Card.Card(card_dict) for card_dict in card_list]
elif 'code' in json:
raise FUTErrorCodeException("Could not get complete search.",json)
当我调用函数print(func.search())时,它会生成一个对象列表并打印终端中的每个对象。每个对象都有一堆信息,我试图获取所有信息并将其存储为字典。我认为Card.py正是我所需要的,除非我真的不懂如何使用它。
答案 0 :(得分:0)
如果请求实际上有效,则该函数应返回卡片词典列表。
return [Card.Card(card_dict) for card_dict in card_list]
是list comprehension,它会为auctionInfo json中的每张卡返回card_dict的一个或多个结果(可能是返回值是一个dict对象)。
你不应该期待一本字典,而是一本字典列表。如果有一些唯一标识符,您可以编辑代码
if 'auctionInfo' in json:
card_list = json['auctionInfo']
return {some_unique_id: Card.Card(card_dict) for card_dict in card_list}
编辑:我在some_unique_id k:v对中有花括号,这会破坏它。
替代方案:将该功能保持原样并在另一侧处理它,并快速理解如下:
{card.unique_id_thing:card for card in search()}