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

Python3.8合并字典如何实现相同键对应值追加而非覆盖

Python 3.8字典相同键值追加合并方案

方法1:原生字典手动判断(无额外依赖,兼容性最好)

逻辑为遍历待合并字典的键值对,判断键是否已存在于基础字典:

  • 已存在:直接向值列表追加新值
  • 不存在:将键对应的值初始化为包含当前新值的列表

示例代码:

# 初始化空基础字典
dict_base = dict()

# 定义合并函数
def merge_dict(base: dict, new_dict: dict) -> None:
    for key, value in new_dict.items():
        if key in base:
            base[key].append(value)
        else:
            base[key] = [value]

# 测试用字典
dict_1 = {'Sedan': 'Accord','SUV': 'Pilot'}
dict_2 = {'Sedan': 'Camry','SUV': 'Highlander'}

# 执行合并
merge_dict(dict_base, dict_1)
merge_dict(dict_base, dict_2)

print(dict_base)
# 输出符合预期:{'Sedan': ['Accord', 'Camry'], 'SUV': ['Pilot', 'Highlander']}

方法2:使用collections.defaultdict简化逻辑

使用标准库的defaultdict可以省略键存在性的手动判断,代码更简洁:

from collections import defaultdict

# 初始化默认值为列表的基础字典
dict_base = defaultdict(list)

dict_1 = {'Sedan': 'Accord','SUV': 'Pilot'}
dict_2 = {'Sedan': 'Camry','SUV': 'Highlander'}

# 合并逻辑
for d in [dict_1, dict_2]:
    for k, v in d.items():
        dict_base[k].append(v)

# 可选:转为普通字典类型
dict_base = dict(dict_base)

注意事项

  • 如果待合并字典的值本身是列表类型,将append改为extend即可避免生成嵌套列表
  • 以上两种方法均原生支持Python 3.8,无需安装第三方依赖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 18:45:08