我想了解以下代码:
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]}
答案 0 :(得分:2)
dd_pair[2]
正在返回对新创建的list
的引用,其值为[0, 0]
。忽略defaultdict
本身,看看它如何与list
类似:
>>> mylist = [0, 0]
>>> mylist[1] = 1
>>> mylist
[0, 1]
每次访问此前未访问的密钥时,defaultdict
只是动态创建list
mylist
,将其存储为请求密钥的值,并返回对它的引用。通过添加[1]
,您可以对list
执行索引分配,因为它是存储和返回的相同list
引用,修改一个会修改另一个。