如何将固定数量的空dict添加到Python列表中?

如何将固定数量的空dict添加到Python列表中?,python,Python,如果我创建了一个包含空字典的列表,然后将该列表乘以一个数字,似乎python没有向列表中添加更多字典,而是用对同一字典的更多引用填充列表 >>> d = [{}]*3 >>> d[0]["x"] = 43 >>> d [{'x': 43}, {'x': 43}, {'x': 43}] 如您所见,在其中一个字典中添加一个元素会导致插入到所有字典中,这意味着实际上只有一个字典,d中有三个指向它的指针 为什么会这样?在Python中,向列表中添加

如果我创建了一个包含空字典的列表,然后将该列表乘以一个数字,似乎python没有向列表中添加更多字典,而是用对同一字典的更多引用填充列表

>>> d = [{}]*3
>>> d[0]["x"] = 43
>>> d
[{'x': 43}, {'x': 43}, {'x': 43}]
如您所见,在其中一个字典中添加一个元素会导致插入到所有字典中,这意味着实际上只有一个字典,d中有三个指向它的指针


为什么会这样?在Python中,向列表中添加大量空dict的最佳方法是什么?

您应该使用列表理解:

d = [{} for _ in range(3)]
d = [{} for _ in range(3)]
这将创建具有不同指针的词典列表


正如您所注意到的,[{}]*3使用相同的指针创建字典列表。

您应该使用列表理解:

d = [{} for _ in range(3)]
d = [{} for _ in range(3)]
这将创建具有不同指针的词典列表


正如您所注意到的,[{}]*3使用相同的指针创建字典列表。

您可以使用列表理解:

d = [{} for _ in range(3)]
d = [{} for _ in range(3)]

您可以使用列表:

d = [{} for _ in range(3)]
d = [{} for _ in range(3)]

类似地,具体到字典:这两个答案不同,但在一个词中。我想知道能和应该有什么区别。d=[{}]*3创建一个列表,其中有3个指向它的指针。如果更改其中一个的内容,也会影响其他内容。@b提示它们是同时编写的。对我来说,应该有点太强了,但我有偏见类似地,具体到字典:这两个答案不同,但在一个词中。我想知道能和应该有什么区别。d=[{}]*3创建一个列表,其中有3个指向它的指针。如果更改其中一个的内容,也会影响其他内容。@b提示它们是同时编写的。对我来说,应该有点太强了,但我有偏见