在 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] 等}。