这是python的正常行为吗?

Dmi*_*nev 3 python dictionary list

在最新的Python(3.2)中:

>>> l = [{}]*2
>>> l[1]['key'] = 'value'
>>> l
[{'key': 'value'}, {'key': 'value'}]
Run Code Online (Sandbox Code Playgroud)

我希望我能[{}, {'key': 'value'}]在这次行动之后.是正常行为还是错误?

Amb*_*ber 12

正常.请尝试使用l = [{} for x in range(2)].

[{}]*2实际上并没有制作2个不同的词典 - 它创建了一个列表,其中包含对同一个词典的两个引用.因此,更新该字典会使更改显示在列表中的两个项目中,因为这两个项目实际上是相同的字典,只是引用了两次.