[英]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.