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

Python字典列表值合并:如何正确合并对应键的列表?

字典对应键的列表合并问题

我有两个值为列表的字典:

n = {'d1': [1, 2, 3], 'd2': ['a', 'b', 'c']}
m = {'d1': [4, 5], 'd2': ['d', 'e']}

期望得到的输出是:

{'d1': [1, 2, 3, 4, 5], 'd2': ['a', 'b', 'c', 'd', 'e']}

我尝试了以下代码:

for k in n:
    for k in m:
        n[k] += m[k]

但得到了错误的输出:

> print(n)
> {'d1': [1, 2, 3, 4, 5, 4, 5], 'd2': ['a', 'b', 'c', 'd', 'e', 'd', 'e']}

错误原因

嵌套两层循环会导致每个键被重复处理两次。外层遍历n的键时,内层又遍历m的所有键,相当于每个n的键都会被追加m中所有键的列表两次,最终出现重复元素。

正确实现方式

方式一:直接修改原字典n

因为两个字典的键完全匹配,只需遍历一次键,将m对应键的列表追加到n的对应列表即可:

n = {'d1': [1, 2, 3], 'd2': ['a', 'b', 'c']}
m = {'d1': [4, 5], 'd2': ['d', 'e']}

for k in n:
    n[k] += m[k]

print(n)

输出结果:

{'d1': [1, 2, 3, 4, 5], 'd2': ['a', 'b', 'c', 'd', 'e']}

方式二:创建新字典(保留原字典)

如果不想修改原始的n,可以用字典推导式生成新的合并字典:

n = {'d1': [1, 2, 3], 'd2': ['a', 'b', 'c']}
m = {'d1': [4, 5], 'd2': ['d', 'e']}

merged_dict = {key: n[key] + m[key] for key in n}
print(merged_dict)

该方法简洁高效,同时保留了原字典的内容。

方式三:兼容键不匹配的场景

如果两个字典的键可能不完全相同,可以先获取所有键的集合,再合并对应列表(不存在的键用空列表补充):

n = {'d1': [1, 2, 3], 'd2': ['a', 'b', 'c'], 'd3': [7, 8]}
m = {'d1': [4, 5], 'd2': ['d', 'e'], 'd4': ['f']}

merged_dict = {}
all_keys = set(n.keys()).union(m.keys())
for key in all_keys:
    merged_dict[key] = n.get(key, []) + m.get(key, [])

print(merged_dict)

输出结果:

{'d1': [1, 2, 3, 4, 5], 'd2': ['a', 'b', 'c', 'd', 'e'], 'd3': [7, 8], 'd4': ['f']}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 06:39:14