为什么使用以下代码:
lst = [{}]*2
lst[0]['key'] = 7
print lst
提供[{' key':7},{' key':7}]
答案 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)