使用相同的键设置字典值时,字典的python列表出现异常行为

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?为什么初始化为lstlst1之间没有区别。

hailong161 回答:使用相同的键设置字典值时,字典的python列表出现异常行为

如果您复制字典(使用的方式或a = b = {'someKey': 'someValue'}),则仅复制引用,而不复制对象本身。通过引用更改对象将反映同一对象的其他引用中的更改。

本文链接:https://www.f2er.com/3127876.html

大家都在问