代码之家  ›  专栏  ›  技术社区  ›  MrD

Python,deepcopy有问题吗?[副本]

  •  0
  • MrD  · 技术社区  · 6 年前

    有人能给我解释一下吗?这对我来说毫无意义。

    我把一本词典复制成另一本,然后编辑第二本,两本都变了。为什么会这样?

    >>> dict1 = {"key1": "value1", "key2": "value2"}
    >>> dict2 = dict1
    >>> dict2
    {'key2': 'value2', 'key1': 'value1'}
    >>> dict2["key2"] = "WHY?!"
    >>> dict1
    {'key2': 'WHY?!', 'key1': 'value1'}
    
    0 回复  |  直到 6 年前
        1
  •  0
  •   xaxxon    5 年前

    蟒蛇 从未 隐式复制对象。当你设置 dict2 = dict1 ,使它们引用相同的dict对象,因此当对其进行变异时,对它的所有引用都将继续引用当前状态的对象。

    如果要复制dict(这很少见),必须显式地使用

    dict2 = dict(dict1)
    

    dict2 = dict1.copy()
    
        2
  •  0
  •   Anushk    5 年前

    当您分配 dict2 = dict1 ,您没有复制 dict1 ,结果是 dict2 只是另一个名字 听写1 .

    要复制可变类型(如字典),请使用 copy / deepcopy copy 模块。

    import copy
    
    dict2 = copy.deepcopy(dict1)