Python如何在JSON字典列表中依据同字典属性匹配提取目标值
解决思路
你当前的问题本质是attributes数组的元素数量、顺序不固定,用固定下标[5]取值会出现错位,改为遍历每个attributes元素匹配id=5的项再取值即可。
修正后代码
import json import pandas as pd with open('fulldump.json', 'r') as f: data = json.load(f) table = [] for entry in data['objectEntries']: name = entry['name'] target_val = None # 遍历属性列表匹配id=5的项 for attr in entry['attributes']: # 兼容JSON示例中出现的大小写Id两种写法 if attr.get('id') == 5 or attr.get('Id') == 5: # 非空判断避免KeyError if 'subValue' in attr and len(attr['subValue']) > 0: target_val = attr['subValue'][0].get('displayValue') break table.append([name, target_val]) df = pd.DataFrame(table, columns=['Name', 'Get'])
注意事项
- 若你的实际JSON数据中id字段均为小写,可删除代码中
or attr.get('Id') == 5的判断逻辑 - 代码中增加了多层非空判断,避免
subValue字段不存在、subValue为空数组时程序报错 - 未找到id=5的属性项时,对应的
Get列会填充None,可根据需求替换为自定义默认值
内容的提问来源于stack exchange,提问作者Aud
相关产品推荐
相关产品推荐

