"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi la mise à jour du dictionnaire Python à copie peu profonde n'affecte pas le dictionnaire d'origine?

Pourquoi la mise à jour du dictionnaire Python à copie peu profonde n'affecte pas le dictionnaire d'origine?

Publié le 2025-04-14
Parcourir:669

Why Doesn\'t Updating a Shallow Copy of a Python Dictionary Affect the Original?

Comprendre la copie peu profonde dans les dictionnaires python: pourquoi les mises à jour en copie n'affectent pas l'original

lorsque vous travaillez avec des dictionnaires Python, il est important de comprendre la distinction entre la copie superficielle et profonde. Une copie peu profonde crée un nouveau dictionnaire qui contient des références aux mêmes objets que le dictionnaire original, tandis qu'une copie profonde crée un nouveau dictionnaire avec des copies des objets. Cela signifie que le nouveau dictionnaire contiendra des références aux mêmes objets qui sont stockés dans le dictionnaire d'origine. En conséquence, toutes les modifications apportées à la copie seront également reflétées dans le dictionnaire original.

Exemple:

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}

Dans cet exemple, la méthode dict.copy () crée un nouveau dictionnaire, nouveau, qui contient des références aux mêmes objets que le dictionnaire original. Lorsque nous mettons à jour la copie avec {'c': 3}, l'original et la copie reflètent ce changement.

Pourquoi les mises à jour dans la copie n'affectent pas l'original
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}

La raison pour laquelle les mises à jour dans une copie peu profonde n'affectent pas l'original est que la copie ne contient que des références aux objets. Lorsque nous mettons à jour la copie, nous ne modifions pas les objets réels, mais seulement les références.

Cela contraste avec une liste, où une copie superficielle contient une référence à la liste elle-même et non aux éléments à l'intérieur. Lorsque nous mettons à jour la copie d'une liste, nous mettons à jour les éléments de la liste, qui affecte à la fois la copie et la copie originale. Cette fonction copie récursivement tous les objets du dictionnaire, créant une nouvelle structure avec des références distinctes.

Exemple:

Importer la copie 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}

Dans cet exemple, la fonction copy.deepcopy () crée un nouveau dictionnaire, nouveau, qui contient des copies des objets du dictionnaire original. Lorsque nous mettons à jour la copie, le dictionnaire d'origine reste non affecté.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3