Python使用ChainMap遍历多字典提取parameters参数值问题求解
原因说明
ChainMap的工作逻辑是将多个字典合并为单个逻辑映射,遇到重复键时仅返回第一个字典的匹配值,因此你之前的写法只能获取injury的parameters值。
方法1:直接遍历字典列表(最简实现)
不需要借助ChainMap,直接把目标字典放入列表循环取值即可:
# 汇总所有待处理的字典 dict_list = [injury, rescued, manual_system_impact] for d in dict_list: # 可选:加判断避免字典无parameters键时报错 if "parameters" in d: print(d["parameters"])
方法2:基于ChainMap的正确实现
如果需要保留ChainMap的用法,可遍历其maps属性(该属性存储了所有传入的原始字典):
from collections import ChainMap chained_dict = ChainMap(injury, rescued, manual_system_impact) for d in chained_dict.maps: print(d["parameters"])
方法3:Pandas实现(适合后续数据分析)
如果需要对parameters的值做进一步分析,可以转成DataFrame格式:
import pandas as pd dict_list = [injury, rescued, manual_system_impact] dict_names = ["injury", "rescued", "manual_system_impact"] params_list = [] for name, d in zip(dict_names, dict_list): # 提取parameters列表里的分布字典,补充来源字段 dist_data = d["parameters"][0] dist_data["来源字典"] = name params_list.append(dist_data) # 转成DataFrame打印 df = pd.DataFrame(params_list) print(df)
内容的提问来源于stack exchange,提问作者Karla Andrea Sandoval
相关产品推荐
相关产品推荐

