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

如何在Python中合并两个字典:相同键的值相加

Python字典合并:相同键值求和的实现方法

需求是合并两个字典,当存在相同键时,新字典中该键对应的值为原两个字典值的和;不同键则保留各自的值。

你的代码存在的问题

  • 判断键的逻辑错误:shopping_cart.keys() in shopping_cart_2.keys 里,shopping_cart_2.keys缺少括号,且不能直接用视图对象做in判断,应该遍历单个键来检查是否存在。
  • 值的处理错误:shopping_cart.values + shopping_cart_2.values 同样缺少括号,且视图对象直接相加无法实现按键对应的值求和,也无法生成目标字典。

正确实现方式

方法一:基础循环(易理解)

通过复制第一个字典,再遍历第二个字典的键值对,对存在的键做值累加,不存在的键直接添加:

def merge_carts(cart1, cart2):
    merged = cart1.copy()
    for key, value in cart2.items():
        if key in merged:
            merged[key] += value
        else:
            merged[key] = value
    return merged

shopping_cart = {'milk': 1, 'eggs': 1, 'bread': 2}
shopping_cart_2 = {'milk': 1 ,'coke': 3, 'oyster sauces': 1}

new_shop = merge_carts(shopping_cart, shopping_cart_2)
print(new_shop)  # 输出: {'milk': 2, 'eggs': 1, 'bread': 2, 'coke': 3, 'oyster sauces': 1}

方法二:字典推导式(简洁)

利用集合获取所有唯一键,再通过get方法获取对应值(不存在则取0),计算求和:

shopping_cart = {'milk': 1, 'eggs': 1, 'bread': 2}
shopping_cart_2 = {'milk': 1 ,'coke': 3, 'oyster sauces': 1}

merged = {
    key: shopping_cart.get(key, 0) + shopping_cart_2.get(key, 0)
    for key in set(shopping_cart) | set(shopping_cart_2)
}

print(merged)

方法三:collections.Counter(最简便,适合值为整数场景)

Counter是专门用于计数的工具类,直接相加即可实现相同键值求和:

from collections import Counter

shopping_cart = {'milk': 1, 'eggs': 1, 'bread': 2}
shopping_cart_2 = {'milk': 1 ,'coke': 3, 'oyster sauces': 1}

merged_counter = Counter(shopping_cart) + Counter(shopping_cart_2)
print(dict(merged_counter))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 13:24:48