Python-如何复制字典并仅编辑副本

发布于 2021-02-02 23:23:23

有人可以向我解释一下吗?这对我来说毫无意义。

我将字典复制到另一个字典中,然后编辑第二个字典,并且两者都已更改。为什么会这样呢?

>>> dict1 = {"key1": "value1", "key2": "value2"}
>>> dict2 = dict1
>>> dict2
{'key2': 'value2', 'key1': 'value1'}
>>> dict2["key2"] = "WHY?!"
>>> dict1
{'key2': 'WHY?!', 'key1': 'value1'}
关注者
0
被浏览
175
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    分配时dict2 = dict1,你并没有复制该文件的副本dict1,结果dict2只是该文件的另一个名称dict1。

    要复制字典等可变类型,请使用copy/ deepcopycopy模块。

    import copy
    
    dict2 = copy.deepcopy(dict1)
    


  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    Python 绝不会隐式复制对象。设置时dict2 = dict1,将使它们引用同一精确的dict对象,因此,在对它进行突变时,对其的所有引用都将始终引用该对象的当前状态。

    如果要复制字典(这种情况很少见),则必须使用

    dict2 = dict(dict1)
    

    要么

    dict2 = dict1.copy()
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看