Maison >développement back-end >Tutoriel Python >Pourquoi la modification d'une copie de dictionnaire Python modifie-t-elle également l'original ?

Pourquoi la modification d'une copie de dictionnaire Python modifie-t-elle également l'original ?

DDD
DDDoriginal
2024-12-23 09:04:34509parcourir

Why Does Modifying a Python Dictionary Copy Also Change the Original?

Comprendre la copie de dictionnaires en Python

En Python, la manipulation des dictionnaires peut prêter à confusion lorsqu'il s'agit de copier leurs valeurs. Cet article aborde un problème courant rencontré lors de la modification d'une copie d'un dictionnaire pour découvrir que le dictionnaire d'origine a également changé.

Pour comprendre ce comportement, il est crucial de comprendre que Python n'effectue pas de copie d'objet implicite. Lorsque vous attribuez dict2 = dict1, vous ne créez pas un nouvel objet dictionnaire ; vous créez simplement une autre référence au même dictionnaire existant. Toute modification apportée à dict2 affectera donc directement dict1 car ils font tous deux référence à la même structure de données sous-jacente.

Pour éviter ce comportement et véritablement copier un dictionnaire, vous devez créer explicitement un nouvel objet dictionnaire. Deux méthodes peuvent y parvenir :

  • Utilisation de dict() : Le constructeur dict() prend un dictionnaire existant comme argument et renvoie un nouvel objet dictionnaire avec une copie de tous les valeur-clé paires.

Exemple :

dict2 = dict(dict1)
  • Utilisation de copy() : La méthode copy() d'un dictionnaire crée un nouvel objet dictionnaire avec une copie superficielle du original.

Exemple :

dict2 = dict1.copy()

En utilisant ces techniques, vous pouvez vous assurer que les modifications apportées à dict2 n'affecteront pas le dict1 d'origine, vous permettant pour conserver l'état du dictionnaire original tout en manipulant sa version copiée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn