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

Python字典值比较代码报错排查与正确实现方案

问题分析与解决方案

原代码存在的问题

  • 遍历逻辑完全偏离需求:需求要求先判断键是否同时存在于两个字典,原代码却直接遍历两个字典的所有值做两两对比,完全没用到键的信息,根本不符合规则。
  • 错误的判断条件引发类型错误:d1 in d2这个写法完全错误,d1和d2都是数值(int/float),in操作符需要右侧是可迭代对象(比如列表、字符串),用在数值上直接触发TypeError,这就是报错的直接原因。
  • 结果字典赋值方式错误:原代码里C1 = d1是把单个数值覆盖整个字典变量,而不是往字典里添加键值对,最终根本得不到期望的字典结构。

正确代码实现

按照需求逻辑,我们需要先处理两个字典的共同键,对比值后分配到对应结果字典;再处理各自独有的键,直接加入结果字典:

D1 = {1: 1.5, 2: 6, 3: 99, 4: 12, 5: 45, 6: 55, 7: 0}
D2 = {6: 11, 4: 15, 1: 80, 2: 3, 3: 3, 5: 72, 34: 1, 35: 66}

C1 = {}
C2 = {}

# 处理两个字典共有的键
common_keys = set(D1.keys()) & set(D2.keys())
for key in common_keys:
    val1 = D1[key]
    val2 = D2[key]
    if val1 > val2:
        C1[key] = val1
    elif val2 > val1:
        C2[key] = val2

# 处理D1独有的键,直接加入C1
for key in D1.keys() - common_keys:
    C1[key] = D1[key]

# 处理D2独有的键,直接加入C2
for key in D2.keys() - common_keys:
    C2[key] = D2[key]

print(C1)
print(C2)

执行这段代码后,输出结果和期望完全一致:

{2: 6, 3: 99, 6: 55, 7: 0}
{1: 80, 4: 15, 5: 72, 34: 1, 35: 66}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 22:04:58