defaultdict附加列表列表而不是列表?

时间:2017-11-03 20:47:18

标签: python python-3.x collections defaultdict

我正在尝试在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的工作方式是否有问题? 提前谢谢

1 个答案:

答案 0 :(得分:3)

  

我的实现或了解defaultdict的工作方式是否有问题?

完全没有。您的代码完全按预期工作。创建了一个空列表的默认值,并.append该列表中的一个元素:[1, 2, 3, 4, 5]。实际上,这与defaultdict根本没有关系。列表包含列表完全没问题。 {{1}将列表添加到另一个列表不是一些特殊操作。它与附加.append1等任何其他元素相同。您'hello编辑的整个列表被认为是单个元素。

如果要将可迭代的元素添加到列表中,则应使用list.extend代替:

  

通过附加iterable中的所有项来扩展列表。相当于.append

a[len(a):] = iterable