1

在 Python 中,有两个字典,简单地做

dict2 = dict1

不会导致 dict2 成为 dict1 的不同副本。它们会指向同一个东西,所以修改 dict2 会对 dict1 产生同样的效果。

一种解决方法是

dict2 = dict(dict1)

所以如果我要修改 dict2,它不会影响 dict1 的值。

在我的程序中,我目前正在制作一个由以前字典的多个副本组成的字典。让我们称上一个字典为 temp2,而当前字典为 temp3。我不知道我需要提前多少份,所以我想这样做:

temp3 = {}
for i in xrange(some_number):
    temp3[i] = dict(temp2)

但是我的调试测试表明,如果我修改 temp3[0] 的字典(同样是 temp2 的副本),那么这也会修改 temp3[1] 的副本和 temp3[2] 等,所以结果是一个包含 n 个相同副本的字典,其中 n = some_number。有谁知道解决方法?谢谢。

编辑:作为对评论的回应, temp2 是一个由列表值组成的字典,因此 {a: [list1], b: [list2] 等}。

4

1 回答 1

3

尝试 copy.deepcopy 方法: http ://docs.python.org/2/library/copy.html

于 2013-02-10T21:18:21.323 回答