Python检查元素中键的值并返回列表中的元素

我有一个 json 文件,我正在使用json库读取该文件


这是json内容(示例)


{

  "type": "champion",

  "format": "standAloneComplex",

  "version": "10.18.1",

  "data": {

    "Aatrox": {

      "version": "10.18.1",

      "id": "Aatrox",

      "key": "266",

      "name": "Aatrox"

    },

    "Ahri": {

      "version": "10.18.1",

      "id": "Ahri",

      "key": "103",

      "name": "Ahri",

    },

}


现在我如何检查是否key等于 266 并返回 的值name?


我正在尝试这样的事情


import json

with open('./source/champion.json') as json_file:

    data_champs = json.load(json_file)['data']

    for champ in data_champs:

        for champ_info in data_champs[champ]:

            if champ['key'] == 266:

                print(champ)

但返回 TypeError: 字符串索引必须是整数


慕沐林林
浏览 133回答 3
3回答

精慕HU

请尝试以下操作:import jsonwith open('./source/champion.json') as json_file:    for name, info in json.load(json_file)['data'].items():        if info['key'] == 266:            print(name)或者更好的是,我们可以在获取数据后关闭文件,而不是在处理过程中保持文件打开状态:import jsonwith open('./source/champion.json') as json_file:    data = json.load(json_file)['data']for name, info in data.items():    if info['key'] == 266:        print(name)解释迭代 adict的元素的最简单方法是使用它的.items()方法:for key, value in d.items():    print(key, "-->", value)

qq_遁去的一_1

下面(仅迭代值,因为键在这里并不重要)import jsonwith open('data.json') as f:    data = json.load(f)['data']    for v in data.values():        if v['key'] == '266':            print(v['name'])            break输出Aatrox

猛跑小猪

干得好:import jsonwith open('champion.json') as json_file:    data_champs = json.load(json_file)['data']    for data in data_champs.keys():        if data_champs[data]['key']=='266':            print(data_champs[data]['name'])印刷:Aatrox
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python