547 Stimmen

dict.copy() verstehen - oberflächlich oder tief?

Beim Nachlesen der Dokumentation für dict.copy() heißt es, dass es eine flache Kopie des Wörterbuchs erstellt. Dasselbe gilt für das Buch, dem ich folge (Beazley's Python Reference), in dem es heißt:

Die Methode m.copy() erstellt eine oberflächliche Kopie der Elemente in einem Mapping-Objekts enthaltenen Elemente und fügt sie in ein neues Mapping-Objekt.

Bedenken Sie dies:

>>> original = dict(a=1, b=2)
>>> new = original.copy()
>>> new.update({'c': 3})
>>> original
{'a': 1, 'b': 2}
>>> new
{'a': 1, 'c': 3, 'b': 2}

Ich nahm also an, dass dies den Wert von original (und fügen Sie 'c' hinzu: 3), auch weil ich eine flache Kopie gemacht habe. Wie wenn Sie es für eine Liste tun:

>>> original = [1, 2, 3]
>>> new = original
>>> new.append(4)
>>> new, original
([1, 2, 3, 4], [1, 2, 3, 4])

Dies funktioniert wie erwartet.

Da es sich bei beiden um oberflächliche Kopien handelt, warum ist die dict.copy() nicht so funktioniert, wie ich es erwarte? Oder ist mein Verständnis von oberflächlichem und tiefem Kopieren fehlerhaft?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X