在别人的代码中我读到了以下两行:
x = defaultdict(lambda: 0)
y = defaultdict(lambda: defaultdict(lambda: 0))
由于defaultdict的参数是默认工厂,我认为第一行意味着当我为不存在的键k调用x[k]时(例如v=x[k]这样的语句),键值对(k ,0) 将自动添加到字典中,就像首先执行语句 x[k]=0 一样。我对么?
那么 y 呢?看起来默认工厂会创建一个默认值为0的defaultdict。但这具体意味着什么呢?我尝试在 Python shell 中使用它,但无法弄清楚它到底是什么。
我认为第一行意味着当我打电话时x[k]
对于不存在的密钥k
(例如这样的声明v=x[k]
), 键值对(k,0)
会自动添加到字典中,就好像语句一样x[k]=0
首先被执行。
这是正确的。这样写比较地道
x = defaultdict(int)
如果是y
,当你这样做时y["ham"]["spam"]
, 钥匙"ham"
被插入y
如果它不存在。与之相关的值变成defaultdict
其中"spam"
自动插入值为0
.
I.e., y
是一种“两层”defaultdict
. If "ham" not in y
,然后评估y["ham"]["spam"]
就像做
y["ham"] = {}
y["ham"]["spam"] = 0
就普通而言dict
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)