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

Python中合并多个同键字典列表值的高效Pythonic实现方法

合并多字典同键列表值的最优实现

简洁Python风格实现(适用于键完全一致的场景)

利用字典推导结合sum快速合并列表:

dict_1 = {"a": ["1"], "b": ["3"]}
dict_2 = {"a": ["2"], "b": ["3"]}
dicts = [dict_1, dict_2]

new_dict = {key: sum((d[key] for d in dicts), []) for key in dicts[0]}

注:sum(..., [])通过累加操作把多个列表依次合并,字典推导批量处理所有键对应的列表。

高性能实现(大数量/大列表场景)

用itertools.chain避免sum的中间列表开销,内存占用更低、速度更快:

from itertools import chain

new_dict = {key: list(chain.from_iterable(d[key] for d in dicts)) for key in dicts[0]}

通用兼容实现(支持键不完全一致的情况)

如果后续可能出现键不匹配的场景,defaultdict是更稳妥的选择:

from collections import defaultdict

new_dict = defaultdict(list)
for d in dicts:
    for key, val in d.items():
        new_dict[key].extend(val)
# 若需转为普通字典:new_dict = dict(new_dict)

关于{**dict_1, **dict_2}失效的原因

这个语法是覆盖式合并,后面字典的键值对会直接替换前面的,因此只会保留最后一个字典的列表值,无法实现列表合并。

内容的提问来源于stack exchange,提问作者Paul-ET

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 14:47:02