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

如何合并两个字典?含交集键值合并的具体实现问询

嘿,我来帮你搞定这两个字典相关的问题!

一、如何合并两个字典?

合并字典有好几种实用的方法,根据你的Python版本和需求选就行:

  • 方法1:Python 3.9+ 专属的|运算符
    这是最简洁的写法,直接生成新字典,不会修改原有的两个字典。如果有重复键,后面的字典会覆盖前面的:

    d1 = {'a': 1, 'b': 2}
    d2 = {'b': 3, 'c': 4}
    merged_dict = d1 | d2
    print(merged_dict)  # 输出: {'a': 1, 'b': 3, 'c': 4}
    
  • 方法2:update()方法
    这个方法会直接修改第一个字典,把第二个字典的内容合并进去。如果不想动原字典,可以先复制一份再操作:

    d1 = {'a': 1, 'b': 2}
    d2 = {'b': 3, 'c': 4}
    # 直接修改d1
    d1.update(d2)
    print(d1)  # 输出: {'a': 1, 'b': 3, 'c': 4}
    
    # 不修改原字典的写法
    merged_dict = d1.copy()
    merged_dict.update(d2)
    
  • 方法3:字典解包**
    适合Python 3.5及以上版本,同样生成新字典,语法也很直观:

    merged_dict = {**d1, **d2}
    print(merged_dict)  # 输出: {'a': 1, 'b': 3, 'c': 4}
    
二、创建仅包含共有键且合并对应值的新字典

针对你给出的例子,我们需要先找出两个字典的共有键,再把对应的值(列表)合并起来。用字典推导式就能轻松实现:

d1 = {1: [2, 3, 'str'], 2: [4, 5, 'str2']}
d2 = {3: [6, 7], 2: [8, 9]}

# 先取键的交集,再合并对应列表
new_d = {
    key: d1[key] + d2[key]
    for key in d1.keys() & d2.keys()
}

print(new_d)  # 输出: {2: [4, 5, 'str2', 8, 9]}

简单解释一下:

  • d1.keys() & d2.keys() 会返回两个字典键的交集,这里就是{2}
  • 对每个共有键,直接把两个字典里的列表相加,就能得到合并后的列表值

如果之后遇到值不是列表的情况,可以先把值转成列表再合并,比如list(d1[key]) + list(d2[key]),不过根据你的场景,直接相加就完全够用啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:32:28