Grundlegendes zu Shallow Copy
Wann Beim Erstellen einer flachen Kopie eines Wörterbuchs wird das Wörterbuchobjekt nicht vollständig kopiert. Stattdessen wird ein neuer Verweis auf das ursprüngliche Objekt erstellt. Dies bedeutet, dass alle an der flachen Kopie vorgenommenen Änderungen auch im Originalwörterbuch widergespiegelt werden.
Beispiel: Wörterbuch
Betrachten Sie das folgende Beispiel:
original = dict(a=1, b=2) new = original.copy() new.update({'c': 3})
Neu ist in diesem Fall eine oberflächliche Kopie des Originals. Wenn new mit {'c': 3} aktualisiert wird, bleibt das ursprüngliche Wörterbuch unverändert, da sowohl original als auch new auf dasselbe zugrunde liegende Objekt verweisen.
Im Gegensatz zum flachen Kopieren in Listen
Listen verhalten sich anders, wenn sie flach kopiert werden. Beim Erstellen einer flachen Kopie einer Liste wird ein neuer Verweis auf das zugrunde liegende Listenobjekt erstellt. Allerdings wirken sich alle an der flachen Kopie vorgenommenen Änderungen nicht auf die ursprüngliche Liste aus, da Listen veränderbare Objekte sind, die unabhängig voneinander geändert werden können.
Deep Copying verstehen
Im Gegensatz zu seichtem Durch Kopieren und tiefes Kopieren wird eine neue, unabhängige Kopie des Originalobjekts erstellt. Dies bedeutet, dass sich alle an der tiefen Kopie vorgenommenen Änderungen nicht auf das Originalobjekt auswirken.
Lösung
Um das Originalwörterbuch zu aktualisieren, muss eine tiefe Kopie erstellt werden statt einer flachen Kopie. Der folgende Code verwendet copy.deepcopy(), um eine tiefe Kopie zu erstellen:
import copy new = copy.deepcopy(original) new.update({'c': 3})
Jetzt bleibt das Original unberührt, während „new“ die aktualisierten Werte hat.
Das obige ist der detaillierte Inhalt vonWarum ändert die Aktualisierung einer oberflächlichen Kopie eines Wörterbuchs nicht das Original?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!