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

如何合并3个以上含重复键的字典?Python技术问询

合并多个字典并拼接相同键的列表值

问题场景

现有多个字典,每个字典的键对应列表类型的值,需要将这些字典合并,相同键对应的列表按顺序拼接,最终得到一个整合后的字典。

示例输入:

dic1 = {'celia': [14, 3]}
dic2 = {'celia': [12, 9], 'pierre': [34, 12]}
dic3 = {'celia': [10, 11], 'gustav': [22]}
dic4 = {'pierre': [9, 21]}

期望输出:

{'celia': [14, 3, 12, 9, 10, 11], 'pierre': [34, 12, 9, 21], 'gustav': [22]}

解决方案

1. 基础循环实现

无需依赖额外模块,手动遍历所有字典和键值对,处理列表拼接:

merged_dict = {}
# 遍历所有待合并的字典
for d in [dic1, dic2, dic3, dic4]:
    for key, values in d.items():
        if key in merged_dict:
            # 键已存在,扩展现有列表
            merged_dict[key].extend(values)
        else:
            # 键不存在,复制列表存入新字典(避免原字典修改影响结果)
            merged_dict[key] = values.copy()

print(merged_dict)

2. 使用collections.defaultdict简化代码

借助defaultdict自动处理不存在的键,代码更简洁:

from collections import defaultdict

merged_dict = defaultdict(list)
for d in [dic1, dic2, dic3, dic4]:
    for key, values in d.items():
        merged_dict[key].extend(values)

# 若需要转为普通字典,执行dict(merged_dict)
print(dict(merged_dict))

3. 函数式风格:用functools.reduce合并

适合喜欢函数式编程的场景,通过reduce迭代合并字典:

from functools import reduce

def merge_two_dicts(a, b):
    for key, values in b.items():
        if key in a:
            a[key].extend(values)
        else:
            a[key] = values.copy()
    return a

merged_dict = reduce(merge_two_dicts, [dic1, dic2, dic3, dic4], {})
print(merged_dict)

内容的提问来源于stack exchange,提问作者gustavjaune

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 15:13:28