为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕沐林林 2023-08-08 15:27:03
我有一个 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 jsonwith 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: 字符串索引必须是整数
查看完整描述

3 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

请尝试以下操作:


import json



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

    for name, info in json.load(json_file)['data'].items():

        if info['key'] == 266:

            print(name)

或者更好的是,我们可以在获取数据后关闭文件,而不是在处理过程中保持文件打开状态:


import json



with 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)


查看完整回答
反对 回复 2023-08-08
?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

下面(仅迭代值,因为键在这里并不重要)


import json


with open('data.json') as f:

    data = json.load(f)['data']

    for v in data.values():

        if v['key'] == '266':

            print(v['name'])

            break

输出


Aatrox


查看完整回答
反对 回复 2023-08-08
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

干得好:


import json

with 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


查看完整回答
反对 回复 2023-08-08
  • 3 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信