首页 > 解决方案 > 如何在 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

标签: pythonjsonpython-3.xpython-requests

解决方案


由于 python 值是通过引用传递的,因此您可以使用键作为冠军 id 指向前一个 dict 的值创建一个新的 dict,这样您就不会复制太多数据。但是要小心,如果您更改一个字典中的数据,则另一个字典中的数据也会更改

def new_dict(d):
  return { val["id"]:val for val in d.values() }

推荐阅读