如何从Python中的JSON打印特定键中的特定值

时间:2018-11-20 07:06:39

标签: python json python-3.x python-requests

我写了2个函数,所以我可以知道冠军名称知道冠军名称,但是我想知道冠军名称知道冠军名称,但是由于数据的结构,我不知道如何提取名字。

"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

2 个答案:

答案 0 :(得分:0)

由于python值是通过引用传递的,因此您可以使用键作为主ID来创建新字典,该主键ID指向先前字典的值,这样就不会重复太多数据。但是要小心,如果您在一个命令中更改数据,那么在另一个命令中也将更改数据

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

答案 1 :(得分:0)

我用以下代码解决了我的问题:

def championNameByID(id):
    championData = requestChampionData()
    allChampions = championData['data']
    for champion in allChampions:
        if id == allChampions[champion]['key']:
            championName = allChampions[champion]['name']
            return championName