使用列表默认值

时间:2015-10-30 00:26:45

标签: python python-2.7

我想了解以下代码:

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]}

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引用,修改一个会修改另一个。