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

Python中defaultdict的[]访问与get()返回结果不一致是正常行为吗?

问题解答

这是defaultdict的正常设计行为,二者的底层实现逻辑本身就存在差异:

  • 下标访问d[key]触发的是defaultdict重写的__getitem__方法:当目标key不存在时,会自动调用你传入的默认工厂函数生成默认值,同时将这个key和默认值存入字典后返回结果,所以d[0]会返回"test"符合设计预期。
  • get()方法是defaultdict从普通dict继承的原生方法,它的逻辑从未被修改:方法内部只会判断key是否已经存在于字典中,存在就返回对应值,不存在就直接返回方法第二个参数指定的默认值(未传该参数时默认返回None),全程不会触发默认工厂函数的执行。

你可以先执行一次d[0]完成键值对的写入,之后再调用d.get(0)就会正常返回"test"。如果不想触发键写入又要拿到默认值,也可以显式给get传第二个参数,比如d.get(0, "test")。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:06:06