Mientras lee la documentación dict.copy()
, dice que hace una copia superficial del diccionario. Lo mismo ocurre con el libro que estoy siguiendo (Beazley's Python Reference), que dice:
El método m.copy () hace una copia superficial de los elementos contenidos en un objeto de mapeo y los coloca en un nuevo objeto de mapeo.
Considera esto:
>>> original = dict(a=1, b=2)
>>> new = original.copy()
>>> new.update({'c': 3})
>>> original
{'a': 1, 'b': 2}
>>> new
{'a': 1, 'c': 3, 'b': 2}
Así que supuse que esto actualizaría el valor de original
(y agregaría 'c': 3) también porque estaba haciendo una copia superficial. Como si lo hicieras por una lista:
>>> original = [1, 2, 3]
>>> new = original
>>> new.append(4)
>>> new, original
([1, 2, 3, 4], [1, 2, 3, 4])
Esto funciona como se esperaba.
Dado que ambas son copias poco profundas, ¿por qué dict.copy()
no funciona como esperaba? ¿O mi comprensión de la copia superficial o profunda es defectuosa?