Python 3.7.2(未检查其他版本)中的这种行为使我感到惊讶。目的是要有一个具有相同键的字典列表,并能够操纵各个值。使用列表索引和字典键,预期的行为是我应该能够设置特定字典的键的值。
这是示例代码:
lst = []
lst.append({"A" : 0,"B" : 0 })
lst.append({"A" : 0,"B" : 0 })
lst[1]["B"] = 11
print(lst)
lst2 = [{"A" : 0,"B" : 0 }]*2
lst2[1]["B"] = 11
print(lst2)
结果如下:
[{'A': 0,'B': 0},{'A': 0,'B': 11}]
[{'A': 0,'B': 11},'B': 11}]
第二个结果使我感到惊讶,为什么它将两个字典的键“ B”的值都设置为11?为什么初始化为lst
和lst1
之间没有区别。