mam pytanie o metody słownika kopiowania na przykład powiedzmy mamPython słownik kopia metoda
>> d = {'pears': 200, 'apples': 400, 'oranges': 500, 'bananas': 300}
>> copy_dict = d.copy()
Teraz gdybym sprawdzić identyfikatory obu d i copy_dict, oba są różne
>> id(d)
o/p = 140634603873176
>> id(copy_dict)
o/p = 140634603821328
ale jeśli sprawdzam id obiektów w słownikach, mają one takie samo znaczenie id (d ['gruszki']) = id (copy_dict ['pears'])
>> id(d['pears'])
o/p = 140634603971648
>> id (copy_dict['pears'])
o/p = 140634603971648
Wszystkie obiekty w nowym dykcie są odniesieniami do tych samych obiektów, co oryginalny dict.
Teraz, jeśli zmienię wartość klucza 'gruszki' w d, nie ma zmiany w tym samym kluczu w copy_dict i kiedy sprawdzam id's teraz, id (d ['gruszki'])! = Id (copy_dict [ „gruszki”])
>> d['pears'] = 700
>> print copy_dict['pears']
o/p = 200
Moje pytanie brzmi, czy obiekty w nowych dict są odniesienia do tych samych obiektów jak oryginalnego dict dlaczego jest wartość nowej dict nie uległ zmianie, gdy wartość w oryginale słownik zmienił się i jak Python natychmiast zmienił identyfikator, gdy tylko zobaczył zmianę wartości?
Czy możesz podać mi pełny opis różnicy między głęboką i płytką kopią?
Możliwy duplikat [Understanding dict.copy() - shallow or deep?] (Http://stackoverflow.com/questions/3975376/understanding-dict-copy-shallow-or-deep) – Backtrack