【问题标题】:How to print specific value from specific key from JSON in Python如何在 Python 中从 JSON 中的特定键打印特定值
【发布时间】:2018-11-20 07:06:39
【问题描述】:

我编写了 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

【问题讨论】:

  • 在数据库中复制数据(包括 JSON)很少(例如,从不)是个好主意。我建议重组您的 JSON,以便冠军名称与其余数据位于最里面的块中。这将满足访问数据的两种(和其他)方法。

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我用这段代码解决了我的问题:

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

    【讨论】:

      猜你喜欢
      • 2012-02-24
      • 2020-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      • 2022-12-01
      • 1970-01-01
      • 2021-10-23
      相关资源
      最近更新 更多