簡體   English   中英

為什么 defaultdict 的值的迭代仍然是一個列表?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM