我正在尝试在python 3中使用collections.defaultdict。 我尝试在控制台中执行以下步骤:
>>> from collections import defaultdict
>>> l = [1,2,3,4,5]
>>> dd = defaultdict(list)
>>> dd["one"].append(l)
>>> print(dd)
defaultdict(<class 'list'>, {'one': [[1, 2, 3, 4, 5]]})
因为,你可以看到它添加[[1, 2, 3, 4, 5]]
,即列表列表,所以我需要两个for循环来读取它的变量。
为什么它不附加[1, 2, 3, 4, 5]
??
我的实现或了解defaultdict的工作方式是否有问题? 提前谢谢
答案 0 :(得分:3)
我的实现或了解defaultdict的工作方式是否有问题?
完全没有。您的代码完全按预期工作。创建了一个空列表的默认值,并.append
该列表中的一个元素:[1, 2, 3, 4, 5]
。实际上,这与defaultdict
根本没有关系。列表包含列表完全没问题。 {{1}将列表添加到另一个列表不是一些特殊操作。它与附加.append
或1
等任何其他元素相同。您'hello
编辑的整个列表被认为是单个元素。
如果要将可迭代的元素添加到列表中,则应使用list.extend
代替:
通过附加iterable中的所有项来扩展列表。相当于
.append
。
a[len(a):] = iterable