在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