Benennen Sie einen Wörterbuchschlüssel um
Gibt es eine Möglichkeit zum umbenennen eines dictionary-Taste, ohne eine Neuzuweisung der seinen Wert für den Sie einen neuen Namen ein und entfernen Sie den alten Namen key; und ohne das Durchlaufen dict-Schlüssel/Wert?
Im Falle des OrderedDict, das gleiche zu tun, während das key-position.
Kommentar zu dem Problem
was genau meinst du mit "ohne eine Neuzuweisung der seinen Wert für den Sie einen neuen Namen ein und entfernen Sie den alten Namen-Schlüssel"? ich sehe das so, das ist die definition umbenennen einer Taste, und alle Antworten weisen Sie den Wert, und entfernen Sie die alt-Taste name. Sie haben noch akzeptieren einer Antwort, die so vielleicht noch nicht erreicht, was Sie suchen?
InformationsquelleAutor der Frage rabin utam | 2013-05-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für ein normales dict, die Sie verwenden können:
Für eine OrderedDict, ich glaube, Sie bauen einen völlig neuen mit einem Verständnis.
Ändern Sie den Schlüssel selbst, so scheint diese Frage zu Fragen, ist nicht praktikabel, weil dict-Schlüssel werden in der Regel unveränderlich Objekte wie zahlen, strings oder Tupel. Anstatt zu versuchen, um den Schlüssel zu ändern, neu zuweisen, wird der Wert einen neuen Schlüssel und entfernen Sie die alten Schlüssel ist, wie können Sie erreichen die "umbenennen" in python.
InformationsquelleAutor der Antwort wim
beste Methode in 1 Zeile:
InformationsquelleAutor der Antwort Tcll
Durch einen check für
newkey!=oldkey
diese Weise können Sie tun:InformationsquelleAutor der Antwort Srinivas Reddy Thatiparthy
Können Sie diese
OrderedDict Rezept
geschrieben von Raymond Hettinger, und ändern Sie Sie, und fügen Sie einerename
Methode, aber dies ist eine O(N) Komplexität:Beispiel:
Ausgabe:
InformationsquelleAutor der Antwort Ashwini Chaudhary
Ein paar Leute vor mir erwähnt, die
.pop
trick, um das löschen und erstellen eines Schlüssels in einem one-liner.Ich persönlich finde das mehr explizite Umsetzung mehr lesbar:
Den obigen code gibt
{'a': 1, 'c': 2}
InformationsquelleAutor der Antwort Uri Goren