You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于顶层键合并列表中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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 19:10:33