Python嵌套字典列表按顶级键分组合并 实现扁平化归并
实现方案
你可以通过遍历字典列表+键判断合并的方式完成需求,以下是两种可直接运行的Python实现:
基础实现(无需引入第三方依赖)
该写法逻辑清晰易读,不需要导入任何内置模块:
# 输入的原始字典列表 input_list = [ {'personal_information': {'merchant_id': '5334'}}, {'profile': {'mid': '767327'}}, {'personal_information': {'mobile': '7654362'}}, {'profile': {'business_name': 'ABG'}} ] result = {} for item in input_list: # 提取当前字典的唯一顶级键和对应的内层字典 top_key, inner_dict = next(iter(item.items())) if top_key in result: # 已存在该顶级键则合并内层字典 result[top_key].update(inner_dict) else: # 不存在则初始化存入 result[top_key] = inner_dict.copy() print(result)
运行后输出的结果和你要求的完全一致。
简洁版实现(借助collections.defaultdict)
如果可以引入内置模块,代码可以更精简:
from collections import defaultdict input_list = [ {'personal_information': {'merchant_id': '5334'}}, {'profile': {'mid': '767327'}}, {'personal_information': {'mobile': '7654362'}}, {'profile': {'business_name': 'ABG'}} ] result = defaultdict(dict) for item in input_list: top_key, inner_dict = next(iter(item.items())) result[top_key].update(inner_dict) # 可选:将defaultdict转为普通字典 result = dict(result) print(result)
注意说明
如果同一个顶级键下的内层字典存在重复的key,后续出现的key值会自动覆盖之前的取值,这是Python字典update方法的默认行为,符合绝大多数合并场景的需求。
内容的提问来源于stack exchange,提问作者Rishabh
相关产品推荐
相关产品推荐

