Kopie eines Dictionaries mit Unterlisten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
martin86_mu
User
Beiträge: 16
Registriert: Montag 10. März 2008, 15:51

Kopie eines Dictionaries mit Unterlisten

Beitragvon martin86_mu » Mittwoch 4. Juni 2008, 10:14

Hi, wenn ich ein Dictionary mit Listen als Values mit copy() kopiere und danach im kopierten eine Liste verändere wird auch das original verändert. An was liegt das? Beispiel:

Code: Alles auswählen

DctLst = { 'x': [1,2,3,4,5], 'y':[100,200,300], 'z':0.01}

DctLstCopy = DctLst.copy()

DctLstCopy['x'].append(6)
DctLstCopy['z'] = 0

print "DctLst =",DctLst
print "DctLstCopy =",DctLstCopy


ergibt:

Code: Alles auswählen

DctLst = {'y': [100, 200, 300], 'x': [1, 2, 3, 4, 5, 6], 'z': 0.01}
DctLstCopy = {'y': [100, 200, 300], 'x': [1, 2, 3, 4, 5, 6], 'z': 0}


Eigentlich wollte ich die Originale DctLst nicht mit der 6 ergänzen. Hat jemand ne Erklärung/Abhilfe. Gruß und danke im voraus
Benutzeravatar
Hyperion
Moderator
Beiträge: 7471
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Beitragvon Hyperion » Mittwoch 4. Juni 2008, 10:30

http://docs.python.org/lib/module-copy.html

Das sollte alles erklären! Du brauchst also deepcopy()!
BlackJack

Beitragvon BlackJack » Mittwoch 4. Juni 2008, 10:30

Die `dict.copy()`-Methode erzeugt nur eine flache Kopie, dass heisst im neuen Dictionary sind Kopien der Referenzen auf die Objekte im alten Dictionary. Schau mal ins `copy`-Modul, da gibt's eine `deepcopy()`-Funktion.
martin86_mu
User
Beiträge: 16
Registriert: Montag 10. März 2008, 15:51

Beitragvon martin86_mu » Mittwoch 4. Juni 2008, 10:35

Hi, danke euch. Perfekt. gruß

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder