我正在尝试复制已设置为值的字典。
dic = {0: set([1]), 1: set([0, 2]), 2: set([1, 3]), 3: set([2, 4]), 4: set([3])}
dic1 = dic.copy()
dic1[0].update(dic[1])
print dic
print dic1
我正在
{0: set([0, 1, 2]), 1: set([0, 2]), 2: set([1, 3]), 3: set([2, 4]), 4: set([3])}
{0: set([0, 1, 2]), 1: set([0, 2]), 2: set([1, 3]), 3: set([2, 4]), 4: set([3])}
所以基本上他们现在是一样的。我试过做字典理解并做.copy()而没有!我怎样才能让原始词典保持不变?
我去了python导师,基本上,键在dic1中,但是值与dic中的值相关联。我怎样才能使它们具有独立的价值?
答案 0 :(得分:1)
你可以像{<3}}那样做
import copy
dic1 = copy.deepcopy(dic)
通常,当您复制字典对象时,对于每个键值对,都会对键进行新的引用(字典不允许将不可变对象作为键),并且还会对值对象进行新的引用。新引用也将引用相同的原始对象。更新集合实际上是在改变对象。因此,新引用和原始对象将反映更改。
完成深度复制后,它实际上会创建值对象的新副本(而不是新引用),即使它是一个可变对象。这个副本是递归完成的。