首先,我对标题感到抱歉,我不知道如何具体说明我的问题。
好的,我正在使用英雄联盟 API 做一些事情。数据显示为Json,可以查到here ,我想做的是循环遍历它。我有来自另一个脚本的数据,该脚本显示比赛中每个球员的统计数据。在这些统计数据中,有一个 id 显示正在使用的冠军。我想使用该 Id 并与上面 json 文件中的每个键进行比较,如果它找到匹配的键 - id 我可以获得冠军的名字。我的问题是我不知道如何遍历它们中的每一个,因为正如您在文件中看到的那样,有 THIS。 (张贴了一张图片,因为我无法正确缩进。
如何获取每一个的 ID?因为,正如您所见,每个人都有不同的名字(Jax、Sona、Tristana 等...)我只想要每个人的 key 和名字。我尝试使用 For 循环,但甚至无法列出第一个,所以这次我很迷茫。感谢您的帮助:)
代码:
champ_r = requests.get("https://global.api.pvp.net/api/lol/static-data/lan/v1.2/champion?"
"api_key=").json()
for x in champ_r['data'][0]:
pprint(x['id'])
如果我这样运行它,我会得到一个 KeyError: 0,如果我删除它,我会得到 TypeError: string indices must be integers
作为输出,我希望它返回每个冠军的 ID 和名称。像这样的东西:
Aatrox - Key
Ahri - Key...
...等等。
请您参考如下方法:
您收到的错误是因为 champ_r['data'] 中没有 0 元素。这是一本以冠军名字为关键字的字典。所以获取冠军的 key 应该像 champ_r['data']['Ahri']['key'] 那样完成。您需要知道的另一件事是,遍历字典会为您提供键,而不是值,因此您的循环应如下所示:
for champ_name in champ_r['data']:
print (champ_name)
pprint(champ_r['data'][champ_name])
