【问题标题】:Changing the initial sub-dictionary when changing a new one, when copying with copy.copy(dict[dict])在使用 copy.copy(dict[dict]) 复制时更改新子词典时更改初始子词典
【发布时间】:2022-11-17 17:42:21
【问题描述】:

我有一个词典的字典,需要随着代码的进行进行修改,但后面也会需要它的原始版本。我知道如果我只是将一个新变量分配给字典,就会创建对现有变量的引用,如果我更改其中一个对象,另一个也会更改。

我还在这里读到,要复制字典、列表等,您应该使用 copy.copy,但是,这对我的问题不起作用。

    from copy import copy
    a = {"1": {"1":2, "2":3}, "2":{"3":4, "4":5}}
    b = copy(a)
    b["1"].update({"4":3})
    # b == {"1": {"1":2, "2":3, "4":3}, "2":{"3":4, "4":5}}
    # a == {"1": {"1":2, "2":3, "4":3}, "2":{"3":4, "4":5}} Although "a" shouldn't change

我是 python 的新手,所以你能帮帮我吗?

【问题讨论】:

    标签: python-3.x


    【解决方案1】:

    这行得通吗?问题似乎是“更新”。

    a = {"1": {"1":2, "2":3}, "2":{"3":4, "4":5}}
    b = a.copy()
    b["1"] = {"4":3}
    print(a)
    print(b)
    

    更新向字典中插入一个项目。 它并没有取代它,有点令人困惑,但这就是它的工作原理。 https://www.w3schools.com/python/ref_dictionary_update.asp

    【讨论】:

    • 是的,非常感谢,它有效,而且,我可以通过合并两个词典来保存以前存在的内容。但是,您能解释一下为什么 .update() 会导致这个问题吗?
    • @Aerocobra,是的,我更新了答案,你能接受吗?
    猜你喜欢
    • 1970-01-01
    • 2018-08-05
    • 2016-06-04
    • 1970-01-01
    • 2015-02-17
    • 2021-10-17
    • 2021-04-05
    • 1970-01-01
    • 2015-06-23
    相关资源
    最近更新 更多