基于顶层键合并列表中Python字典的Pythonic实现方法
简洁实现字典列表的合并
方法一:使用collections.defaultdict
借助defaultdict自动初始化列表类型的默认值,遍历所有字典并合并对应键的列表:
from collections import defaultdict dict_list = [dict1, dict2] merged = defaultdict(list) for d in dict_list: for key, items in d.items(): merged[key].extend(items) # 可选:转换为普通字典(如果不需要defaultdict的特性) merged = dict(merged)
方法二:基础字典操作(无需额外导入)
利用字典的setdefault方法,为不存在的键初始化空列表,再扩展内容:
merged = {} for d in dict_list: for key, items in d.items(): merged.setdefault(key, []).extend(items)
方法三:基于原始DataFrame合并(更高效)
由于你的字典来自pandas.DataFrame.to_dict(),直接合并原始DataFrame再转字典会更高效,避免字典与DataFrame的来回转换:
假设生成dict1和dict2的原始DataFrame分别为df1、df2(对应每个顶层键的子列表来自对应DataFrame的to_dict('records')),可以按键合并对应DataFrame:
import pandas as pd # 合并对应键的DataFrame merged_first = pd.concat([df1['first'], df2['first']], ignore_index=True).to_dict('records') merged_second = pd.concat([df1['second'], df2['second']], ignore_index=True).to_dict('records') # 处理仅存在于部分字典中的键 merged_third = df1['third'].to_dict('records') if 'third' in df1 else [] merged = { 'first': merged_first, 'second': merged_second, 'third': merged_third }
内容的提问来源于stack exchange,提问作者pyth0nEiken
相关产品推荐
相关产品推荐

