为什么要将项添加到dict列表的第一个元素,还要修改列表中的其他dict?

时间:2014-05-31 05:32:48

标签: python

为什么使用以下代码:

lst = [{}]*2
lst[0]['key'] = 7
print lst

提供[{' key':7},{' key':7}]

3 个答案:

答案 0 :(得分:0)

你的第一行:

lst = [{}]*2

在列表中创建两个相同的词典(实际上它创建了两个引用,它们都引用了相同的词典对象)。

这些字典引用引用相同的对象,因此当您更改其中一个时,也会更改另一个。

考虑到这一点,您可以完成以下操作以产生相同的结果

lst = [{}]*2
lst[1]['key'] = 7
print lst

答案 1 :(得分:0)

lst = [{}]*2

这不会在列表中提供2个字典,而是在同一个字典中提供2个字典。因此,改变一个"将改变另一个"另一个" (好吧,他们因此引用了相同的东西)。

列表

     ___   ___
    |   | |   |
    | i0| | i1|
     ---   ---
      |     |
      |     |
   --        --
  |            |
   --->dict<---

(其中i0是索引0,i1是索引1)

答案 2 :(得分:0)

lst = [{}]*2

这将创建一个字典列表,其中两个条目都引用相同的字典实例。

相同
d = {}
lst = []
lst.append(d)
lst.append(d)