在調試我的作業時,我意識到我需要使用deepcopy
複製字典。爲什麼包含實例的字典的深層副本的結果與另一個包含列表的字典的深層副本不同?
我預計deepcopy
給我類似的結果(用列表的字典打交道時,這是真的):
import copy
dict3 = {1 : [1,2,3], 2 : [1,2]}
dict4 = copy.deepcopy(dict3)
print dict3 # {1: [1, 2, 3], 2: [1, 2]}
print dict4 # {1: [1, 2, 3], 2: [1, 2]}
print dict3 == dict4 # True
然而,我發現這樣的:
import copy
class Fruit(object):
def __init__(self, name, color):
self.name = name
self.color = color
def __repr__(self):
return self.color
# Building dict1
dict1 = {}
dict1['apple'] = Fruit('apple', 'red')
dict1['banana'] = Fruit('banana', 'yellow')
# Deep copy dict1 and assign it to dict2
dict2 = copy.deepcopy(dict1)
print dict1 # {'apple': red, 'banana': yellow}
print dict2 # {'apple': red, 'banana': yellow}
print dict1 == dict2 # False
如果我想要一個在最後的print
聲明中給我一個True
的副本,我該怎麼辦?
您還沒有實現在''__eq__' ... Fruit' – jonrsharpe
@jonrsharpe我不知道,哈哈。非常感謝! –