3
d = {1:[]}
dic = d.copy()
dic[1].append(2)

print "d=", d
print "dic=", dic

输出

d= {1:[2]}
dic= {1:[2]}

如何在dic不更改d和返回的情况下分配

d= {1:[]}
dic= {1:[2]}
4

2 回答 2

2

使用copy.deepcopy()

In [5]: import copy

In [6]: d = {1:[]}

In [7]: dic = copy.deepcopy(d)

In [8]: dic[1].append(2)

In [9]: d
Out[9]: {1: []}

In [10]: dic
Out[10]: {1: [2]}

你现在拥有的是一个拷贝:它只是复制了 list reference。结果,如果您在一个字典中更改列表的内容,它也会在另一个字典中更改。

于 2013-03-26T07:06:04.183 回答
-2

您可以使用deepcopy函数(而不是copy)来制作与 相同的新字典d。不要忘记通过导入它from copy import deepcopy

于 2013-03-26T07:06:47.620 回答