2015-10-17 86 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你是一个天才,谢谢我不认为我会注意到 –