Comprender la copia superficial en los diccionarios de Python: por qué las actualizaciones en copia no afectan el original
cuando se trabaja con los diccionarios de Python, es importante entender la distinción entre la copia superficial y las profundas. A shallow copy creates a new dictionary that contains references to the same objects as the original dictionary, while a deep copy creates a new dictionary with copies of the objects.
Shallow Copying with dict.copy()
The dict.copy() method performs a shallow copy of a dictionary. Esto significa que el nuevo diccionario contendrá referencias a los mismos objetos que se almacenan en el diccionario original. Como resultado, cualquier cambio realizado en la copia también se reflejará en el Diccionario original.
Ejemplo:
original = {'a': 1, 'b': 2} new = original.copy() new.update({'c': 3}) print(original) # {'a': 1, 'b': 2} print(new) # {'a': 1, 'c': 3, 'b': 2}
En este ejemplo, el método dict.copy () crea un nuevo diccionario, nuevo, que contiene referencias a los mismos objetos que el diccionario original. Cuando actualizamos la copia con {'c': 3}, tanto el original como la copia reflejan este cambio.
por qué las actualizaciones en copia no afectan el original
la razón por la cual las actualizaciones en una copia superficial no afectan el original es que la copia solo contiene referencias a los objetos. Cuando actualizamos la copia, no estamos cambiando los objetos reales, sino solo las referencias.
Esto contrasta con una lista, donde una copia superficial contiene una referencia a la lista en sí y no a los elementos dentro. Cuando actualizamos la copia de una lista, estamos actualizando los elementos en la lista, que afecta tanto la copia como la original.
profunda copiando con copy.deepcopy ()
para crear una copia de un diccionario que está completamente aislada del original, podemos usar la función copy.deepcopy (). Esta función copia recursivamente todos los objetos en el Diccionario, creando una nueva estructura con referencias distintas.
Ejemplo:
import copy original = {'a': 1, 'b': 2} new = copy.deepcopy(original) new.update({'c': 3}) print(original) # {'a': 1, 'b': 2} print(new) # {'a': 1, 'c': 3, 'b': 2}
En este ejemplo, la función Copy.deepCopy () crea un nuevo diccionario, nuevo, que contiene copias de los objetos en el diccionario original. Cuando actualizamos la copia, el diccionario original no se ve afectado.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3