Flaches Kopieren in Python-Wörterbüchern verstehen: Warum Aktualisierungen in der Kopie keine Auswirkungen auf das Original haben
Bei der Arbeit mit Python-Wörterbüchern ist es wichtig, Folgendes zu beachten den Unterschied zwischen flachem und tiefem Kopieren verstehen. Eine flache Kopie erstellt ein neues Wörterbuch, das Verweise auf dieselben Objekte wie das ursprüngliche Wörterbuch enthält, während eine tiefe Kopie ein neues Wörterbuch mit Kopien der Objekte erstellt.
Flaches Kopieren mit dict.copy()
Die Methode dict.copy() führt eine flache Kopie eines Wörterbuchs durch. Das bedeutet, dass das neue Wörterbuch Verweise auf dieselben Objekte enthält, die im ursprünglichen Wörterbuch gespeichert sind. Dadurch werden alle an der Kopie vorgenommenen Änderungen auch im Originalwörterbuch widergespiegelt.
Beispiel:
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}
In diesem Beispiel das dict.copy ()-Methode erstellt ein neues Wörterbuch, new, das Verweise auf dieselben Objekte wie das ursprüngliche Wörterbuch enthält. Wenn wir die Kopie mit {'c': 3} aktualisieren, spiegeln sowohl das Original als auch die Kopie diese Änderung wider.
Warum Aktualisierungen in der Kopie sich nicht auf das Original auswirken
Der Grund, warum Aktualisierungen in einer flachen Kopie keine Auswirkungen auf das Original haben, liegt darin, dass die Kopie nur Verweise auf die Objekte enthält. Wenn wir die Kopie aktualisieren, ändern wir nicht die tatsächlichen Objekte, sondern nur die Referenzen.
Dies steht im Gegensatz zu einer Liste, bei der eine flache Kopie eine Referenz auf die Liste selbst und nicht auf die darin enthaltenen Elemente enthält. Wenn wir die Kopie einer Liste aktualisieren, aktualisieren wir auch die Elemente in der Liste, was sich sowohl auf die Kopie als auch auf das Original auswirkt.
Deep Copying mit copy.deepcopy()
Um eine Kopie eines Wörterbuchs zu erstellen, die vollständig vom Original isoliert ist, können wir die Funktion copy.deepcopy() verwenden. Diese Funktion kopiert alle Objekte im Wörterbuch rekursiv und erstellt so eine neue Struktur mit eindeutigen Referenzen.
Beispiel:
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}
In diesem Beispiel ist copy.deepcopy( )-Funktion erstellt ein neues Wörterbuch, new, das Kopien der Objekte im ursprünglichen Wörterbuch enthält. Wenn wir die Kopie aktualisieren, bleibt das Originalwörterbuch davon unberührt.
Das obige ist der detaillierte Inhalt vonWarum wirkt sich die Aktualisierung einer flachen Kopie eines Python-Wörterbuchs nicht auf das Original aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!