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

Python defaultdict中get方法在[]操作前后返回值变化的疑问

Python defaultdict中get方法在[]操作前后返回值变化的疑问

嘿,这个问题其实是对defaultdict的get方法和[]访问逻辑的理解差异导致的,完全不是bug,咱们一步步拆解清楚:

首先得明确两个核心逻辑:

  • defaultdict的默认工厂函数(你这里的lambda:6)只有在使用[]访问不存在的键时才会触发——触发时不仅会返回生成的默认值,还会把这个键和默认值一起添加到字典里。
  • get方法的规则是:如果键存在就返回对应值;如果不存在,就返回你传入的第二个参数(没传的话默认是None),它不会触发defaultdict的工厂函数,也不会往字典里添加新的键值对。

结合你的代码和输出咱们逐行看:

  1. 初始化my_dict = defaultdict(lambda: 6, a=7)后,字典里只有"a":7这一组键值对。
  2. 第一次调用my_dict.get("b"):字典里没有"b",又没给get传默认值参数,所以返回None——这时候字典里依然没有"b"。
  3. 调用my_dict["b"]:触发了defaultdict的__getitem__方法,工厂函数生成6,同时把"b":6添加到字典里,所以输出6。
  4. 第二次调用my_dict.get("b"):这时候字典里已经有"b":6了,get找到这个键,自然返回6。

你提问里有个小笔误(说第二次get返回None),不过核心疑问很清晰~简单说就是:[]操作把"b"加到字典里了,之后get就能取到它的值了,这是完全符合defaultdict设计逻辑的正常行为哦。

备注:内容来源于stack exchange,提问作者Avihai Shalom

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 14:22:58