2015-10-17 50 views
-1

下面的代码将打印出我需要的拍卖信息,但是我希望能够打印出一个项目值(例如itemType,rating)。从Python中的字典键获取价值

page = requests.get('https://utas.s2.fut.ea.com/ut/game/fifa16/transfermarket?num=16&leag=13&type=player&start=0&lev=silver&maxb=200', headers=headers, cookies=cookies) 
mydict = page.json() 
print mydict['auctionInfo'] 

这将输出下面的json。我怎样才能提取一个值?

[{u'sellerEstablished': 0, u'itemData': {u'rating': 69, u'itemType': u'player', u'resourceId': -2147297053, u'cardsubtypeid': 2, u'morale': 50, u'lifetimeAssists': 1, u'id': 241577723458, u'statsList': [{u'index': 0, u'value': 8}, {u'index': 1, u'value': 0}, {u'index': 2, u'value': 0}, {u'index': 3, u'value': 0}, {u'index': 4, u'value': 0}], u'assetId': 186595, u'teamid': 1792, u'pile': 5, u'suspension': 0, u'rareflag': 0, u'playStyle': 250, u'attributeList': [{u'index': 0, u'value': 82}, {u'index': 1, u'value': 64}, {u'index': 2, u'value': 67}, {u'index': 3, u'value': 69}, {u'index': 4, u'value': 48}, {u'index': 5, u'value': 57}], u'loyaltyBonus': 0, u'timestamp': 1443317273, u'training': 0, u'nation': 82, u'assists': 1, u'formation': u'f433', u'lifetimeStats': [{u'index': 0, u'value': 8}, {u'index': 1, u'value': 0}, {u'index': 2, u'value': 0}, {u'index': 3, u'value': 0}, {u'index': 4, u'value': 0}], u'leagueId': 13, u'untradeable': False, u'discardValue': 104, u'owners': 3, u'injuryGames': 0, u'contract': 10, u'injuryType': u'leg', u'lastSalePrice': 800, u'fitness': 75, u'itemState': u'forSale', u'preferredPosition': u'RM'}, u'tradeId': 159824505381, u'confidenceValue': 100, u'sellerName': u'FIFA UT', u'expires': 3581, u'buyNowPrice': 200, u'tradeOwner': False, u'offers': 0, u'startingBid': 150, u'watched': None, u'currentBid': 0, u'tradeState': u'active', u'bidState': u'none', u'sellerId': 0}] 
+2

你在找哪个值? – inspectorG4dget

+0

@ inspectorG4dget tradeId是我需要的值 – Martin

+1

@Martin:'mydict ['auctionInfo'] ['tradeId']'。 – GingerPlusPlus

回答

1

json调用返回的值是一个嵌套的字典。你只需要索引每个级别来获得你想要的物品。由于auctionInfo值的顶层是一个元素列表中,你需要使用[0]获得其实际内容:

print mydict['auctionInfo'][0]['itemData']['itemType'] 
print mydict['auctionInfo'][0]['itemData']['rating'] 
print mydict['auctionInfo'][0]['tradeId'] 
+0

谢谢你的解释 – Martin

0

这应该工作:

print mydict['auctionInfo']['tradeId'] 
0

这个工程:

for i in range(len(mydict)): 
try: 
    for key, value in mydict[i].items(): 
     if key == "tradeId": 
      print value 
except: 
    pass 

您可以更改“ tradeId“用任意键找到它的值

+0

这个解决方案是过量的。 – GingerPlusPlus

+0

但它的工作原理!我认为它更通用!无论如何,只要解决方案,我承认其他答案更好 – Mark