python - 如何在 Python 中从 JSON 中的特定键打印特定值
问题描述
我写了 2 个函数,所以我可以在知道冠军名称的情况下获得冠军 ID,但后来我想在知道冠军 ID 的情况下获得冠军名称,但由于数据的结构方式,我无法弄清楚如何提取名称。
"data":{"Aatrox":{"version":"8.23.1","id":"Aatrox","key":"266","name":"Aatrox"
所以在我的代码中,我编写['data']['championName'(in this case Aatrox)]['key']
了获取冠军 ID/密钥。但是,如果我不知道冠军名称但不知道冠军 ID,我该如何扭转它。如果在写完 ['data'] 之后我需要写下冠军名称,我如何获得冠军名称,这样我才能更深入地获取所有冠军信息,例如 ID、头衔等。
链接:http ://ddragon.leagueoflegends.com/cdn/8.23.1/data/en_US/champion.json
代码:
def requestChampionData(championName):
name = championName.lower()
name = name.title()
URL = "http://ddragon.leagueoflegends.com/cdn/8.23.1/data/en_US/champion/" + name + ".json"
response = requests.get(URL)
return response.json()
def championID(championName):
championData = requestChampionData(championName)
championID = str(championData['data'][championName]['key'])
return championID
解决方案
由于 python 值是通过引用传递的,因此您可以使用键作为冠军 id 指向前一个 dict 的值创建一个新的 dict,这样您就不会复制太多数据。但是要小心,如果您更改一个字典中的数据,则另一个字典中的数据也会更改
def new_dict(d):
return { val["id"]:val for val in d.values() }
推荐阅读
- flutter - Flutter中自定义下拉小部件如何实现setState
- python - 具有模式功能的块减少(下采样)3D 数组
- python - Discord.py - 我怎样才能只为在线/dnd/空闲成员发送私人消息,而不是根本不发送?
- python - NameError,未在 Python 中定义的变量
- python - Python 返回类型注解
- javascript - 我可以将 quilljs 与 php 一起使用吗?
- google-apps-script - 有什么方法可以转换 CSV 文件而不避免转换已转换的文件
- html - 关于脚本标签排序的有趣问题以及在这种情况下为什么重要
- django - 如何触发 Django 的 pre_delete 信号?
- spring - 如何将 JRE 1.8 添加到 Eclipse 安装程序 JRE 中?