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

Python中dict赋值时为何要先检查键是否存在?

关于Python字典赋值前键存在性检查的疑问

我发现Python里的dict实例在赋值前会检查键是否存在,这在我看来有点多余,下面用示例说明原因。

示例:

if(key in dictionary):
   dictionary[key] = dictionary[key] + 1
else:
   dictionary[key] = 1

在这个示例里,执行dictionary[key] = dictionary[key] + 1其实没必要提前检查键是否存在:

  • 赋值右侧的dictionary[key] + 1,键存在时会正常取值,不存在时直接抛出KeyError——这个检查和赋值操作本身无关;
  • 而左侧的dictionary[key] =操作,不管键是否存在,只要计算key的哈希值然后赋值就行,键存在性检查对最终结果没有任何影响。

另请注意: 不管有没有写if(key in dictionary):这个判断,都会存在冗余的检查。

再看示例里的第二部分dictionary[key] = 1:这里的键存在性检查同样不改变结果——如果键已经存在,原有值会被1覆盖。那赋值前做这个检查到底有什么意义?

或许这种赋值前的隐式检查有合理的原因?看起来赋值操作的左右两侧,字典的行为不一样:左侧找不到key时不会抛出KeyError,而是直接创建新键。但我暂时想不出这种赋值前检查的必要场景,如果有相关案例,欢迎分享。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 07:07:06