2015-10-17 84 views
1

我從騷亂的服務器的響應:蟒蛇訪問元素在字典裏面字典

def main(): 
    api = RiotAPI('dec34559a91-ad8b-4fd2-b49a-bae3b4524522b8a') 
    summoner_name = str(input("Please enter the summoner ID\n")) 
    if summoner_name == "": 
     summoner_name = "zLKida" 
    r = api.get_summoner_by_name(summoner_name) 
    print(r) 

打印出這樣的事:

{'zlkidda': {'profileIconId': 539, 'id': 27003987, 'summonerLevel': 30, 'name': 'zLKidda', 'revisionDate': 1444958792000}} 

我不知道我怎麼能訪問數據在字典裏面。 請注意,它是作爲字典而不是字符串或其他任何內容返回的。

我曾嘗試:

print(r['zlkidda'].['profileIconId']) 

回答

3

刪除點:

print(r['zlkidda']['profileIconId']) 

或代碼具體而言,重用德summoner_name變量:

print(r[summoner_name]['profileIconId']) 

您在這裏使用subscriptions; [...]從容器中選擇一個元素。在另一方面

.符號,用於attribute referencing,使用對於像dict方法:

print(list(r['zlkidda'].keys())) 
+0

'打印(R [summoner_name] [ 'profileIconId'])'提供了錯誤:KeyError異常: 'zLKidda' –

+0

@LukeGoddard:注意大寫'LK',但返回的字典使用全部小寫字母。輸入一個全小寫的名字,或者在訂閱'r'時使用'summoner_name.lower()'。 –

+0

Omg你是一個天才,謝謝我不認爲我會注意到 –