Heim > Artikel > Backend-Entwicklung > Eine kurze Diskussion über die Änderung des Werts nach dem Anhängen des Wörterbuchs an die Liste in Python
Dieser Artikel führt hauptsächlich eine kurze Diskussion über die Wertänderung nach dem Anhängen des Wörterbuchs an die Liste in Python ein. Jetzt kann ich ihn mit Ihnen teilen
Sehen Sie sich ein Beispiel an
d={'test':1} d_test=d d_test['test']=2 print d
Wenn Sie es auf der Befehlszeile üben, werden Sie feststellen, dass Sie das geändert haben ist d_test, aber d auch Änderungen folgten.
Oft ist das nicht das, was wir erwarten.
Warum?
Weil das Wörterbuch d ein Objekt ist und d_test=d das Wörterbuch nicht erneut im Speicher erstellt. Es zeigt nur auf dasselbe Objekt. Dies ist auch eine Überlegung für Python, um die Leistung zu verbessern und den Speicher zu optimieren.
Die tatsächliche Szene
d={"name":""} l=[] for i in xrange(5): d["name"]=i l.append(d) print l
Schleife stimmt möglicherweise nicht mit dem gewünschten Ergebnis überein.
Auch wenn es an die Liste angehängt wird, ist das, was in der Liste gespeichert ist, immer noch ein Objekt oder die Adresse des Wörterbuchs. und nicht der tatsächliche Speicherplatz im Speicher.
Verwenden Sie die Methode .copy(). Es kann ein neues unabhängiges Wörterbuch erstellt werden
Zu diesem Zeitpunkt wurde festgestellt, dass sich der Wert von „q“ in a nicht ändert, der Wert in der Liste sich jedoch dennoch änderteDa es sich bei der Kopie um eine flache Kopie handeltAber hier gibt es einen Track
d={"name":""} l=[] for i in xrange(5): test=d.copy() test["name"]=i l.append(test) print lWenn Sie ihn direkt zuweisen, wird die Struktur in a nicht geändert (hauptsächlich aufgrund der append method)
Deep copy
a={'q':1,'w':[]} b=a.copy() b['q']=2 b['w'].append(123) print a print bVerwandte Empfehlungen:
Python erstellt eine leere Liste und eine Erklärung zur Verwendung von Anhängen
Das obige ist der detaillierte Inhalt vonEine kurze Diskussion über die Änderung des Werts nach dem Anhängen des Wörterbuchs an die Liste in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!