[英]Why is the iteration of the values of a defaultdict still a list?
from collections import defaultdict
dd = defaultdict(list)
dd['a'].append(1)
dd['a'].append(2)
for d in dd.values():
print(d)
它將d
打印為[1,2]
的list
。 dd.values()
應該是一個list
,而d
不應該是一個值?
defaultdict
中的值是列表。 如果您想要這些列表中的值,您需要執行以下操作:
for d in dd.values():
for x in d:
print(x)
使用defaultdict(list)
創建的 defaultdict 使用 function 調用list()
來創建任何尚未設置的鍵的新值。 所以dd
的每個值都是一個list
(除非它被明確地作為其他東西),並且dd.values()
是一個可迭代的list
序列。
dd.values()
返回一個<class 'dict_values'>
知道字典值的細節,包括迭代它們的能力。
defaultdict
設置為在看到新鍵時創建一個新的空列表。 dd['a'].append(1)
創建了鍵 'a' 並為其值創建了一個列表,然后對該列表執行了 append 。 dd.['a'].append(2)
發現該鍵已經存在並附加到其值(第一次訪問時為1
的列表)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.