[英]Understanding defaultdict behavior with a list default
我试图理解以下代码:
from collections import defaultdict
dd_pair = defaultdict(lambda: [0, 0])
dd_pair[2][1] = 1 # now dd_pair contains {2: [0,1]}
我了解defaultdict
在这里默认为两个元素的列表。 但是结果如何最终变为{2: [0,1]}
dd_pair[2]
返回对值为[0, 0]
的新创建list
的引用。 忽略defaultdict
本身,看看它如何与这样的list
一起工作:
>>> mylist = [0, 0]
>>> mylist[1] = 1
>>> mylist
[0, 1]
defaultdict
只是在每次访问以前从未访问过的密钥时动态创建一个类似于mylist
的list
,将其存储为所请求密钥的值,并返回对其的引用。 通过添加[1]
您可以对该list
进行索引分配,并且由于它与存储和返回的list
参考相同,因此修改其中一个会修改另一个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.