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

Python字典合并:重复键对应列表拼接而非覆盖值的实现方法

实现字典重复键对应列表的拼接合并

要实现重复键对应列表的拼接而非覆盖,你可以用以下几种方法:

方法一:手动遍历合并

先复制第一个字典,再遍历第二个字典的键值对,对重复键执行列表扩展操作:

dict1 = {'a': ['xxx', 'zzz']}
dict2 = {'a': ['yyy', 'zzz']}

dict3 = dict1.copy()
for key, val in dict2.items():
    if key in dict3:
        dict3[key].extend(val)
    else:
        dict3[key] = val.copy()  # 可选,避免后续修改影响原字典的列表

执行后dict3的结果为:{'a': ['xxx', 'zzz', 'yyy', 'zzz']}

方法二:使用collections.defaultdict

如果需要合并多个字典,这种方式更灵活:

from collections import defaultdict

dict1 = {'a': ['xxx', 'zzz']}
dict2 = {'a': ['yyy', 'zzz']}

dict3 = defaultdict(list)
# 遍历所有要合并的字典
for d in [dict1, dict2]:
    for key, val in d.items():
        dict3[key].extend(val)

# 若需要转为普通字典
dict3 = dict(dict3)

方法三:字典推导式(适用于两个字典的场景)

通过集合获取所有键,再对每个键拼接对应列表:

dict1 = {'a': ['xxx', 'zzz']}
dict2 = {'a': ['yyy', 'zzz']}

all_keys = set(dict1) | set(dict2)
dict3 = {key: dict1.get(key, []) + dict2.get(key, []) for key in all_keys}

这里用+拼接会生成新列表,不会修改原字典的列表,适合需要保留原数据的场景。

为什么原方法不生效?

字典的|(合并)和|=(原地更新)运算符的默认逻辑是用后出现的字典值覆盖前一个,所以重复键的列表会被直接替换,无法实现拼接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 12:57:36