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