在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]等}。
不,你制作的复制品,所以我觉得你的分析是不正确。 * temp2中包含了什么?字典中是否包含其他可变值(嵌套字典或列表等)? – 2013-02-10 21:15:21
我第一次从另一个字典中制作temp2,所以它的形式是temp2 = dict(temp1)。 temp2确实由嵌套列表组成。 temp2 = {a:[list1],b:[list2]等。}。我应该补充说,原来的职位... – TakeS 2013-02-10 21:19:21