Copie d'un dictionnaire Python modifiée
Citation de adeline le 11 décembre 2024, 8 h 49 minBonjour,
Je veux créer une copie de mon dictionnaire pour la modifier sans affecter l'original. Pourtant, lorsque je fais des modifications dans la copie, cela impacte également l'original. Voici mon code:
data = {"a": {"x": 1}, "b": {"y": 2}}
copy_data = data.copy()
copy_data["a"]["x"] = 42
print(data)
Je m'attendais à ce que le dictionnaire data reste inchangé, mais ce n'est pas le cas. Pouvez-vous m'expliquer pourquoi et comment résoudre ce problème ? Merci d'avance !
Bonjour,
Je veux créer une copie de mon dictionnaire pour la modifier sans affecter l'original. Pourtant, lorsque je fais des modifications dans la copie, cela impacte également l'original. Voici mon code:
data = {"a": {"x": 1}, "b": {"y": 2}}
copy_data = data.copy()
copy_data["a"]["x"] = 42
print(data)
Je m'attendais à ce que le dictionnaire data reste inchangé, mais ce n'est pas le cas. Pouvez-vous m'expliquer pourquoi et comment résoudre ce problème ? Merci d'avance !
Citation de PythonTech le 11 décembre 2024, 9 h 52 minBonjour adeline,
Votre copie est une copie superficielle, ce qui signifie que les objets imbriqués (comme les dictionnaires à l'intérieur de data) ne sont pas réellement dupliqués. Utilisez copy.deepcopy pour effectuer une copie profonde :
import copy data = {"a": {"x": 1}, "b": {"y": 2}} copy_data = copy.deepcopy(data) copy_data["a"]["x"] = 42 print(data) # Résultat : {"a": {"x": 1}, "b": {"y": 2}}
Bonjour adeline,
Votre copie est une copie superficielle, ce qui signifie que les objets imbriqués (comme les dictionnaires à l'intérieur de data) ne sont pas réellement dupliqués. Utilisez copy.deepcopy pour effectuer une copie profonde :
import copy
data = {"a": {"x": 1}, "b": {"y": 2}}
copy_data = copy.deepcopy(data)
copy_data["a"]["x"] = 42
print(data)
# Résultat : {"a": {"x": 1}, "b": {"y": 2}}