HOWTO · Python
So ändern Sie den Schlüssel in einem Dictionary in Python
Erfahren Sie, wie Sie einen oder mehrere Schlüssel in einem Python-Dictionary umbenennen und dabei ihre Werte behalten.
Auf dieser Seite
Um einen Schlüssel in einem Python-Dictionary umzubenennen, weisen Sie seinen Wert dem neuen Schlüssel zu und entfernen Sie anschließend den alten Schlüssel. Mit dict.pop() können Sie den alten Eintrag in einem Schritt abrufen und entfernen. Für mehrere oder bedingte Änderungen erstellen Sie anhand einer Zuordnung von alten zu neuen Schlüsseln ein neues Dictionary. Bei allen diesen Ansätzen bleiben die zugehörigen Werte erhalten. Wählen Sie je nachdem, ob Sie das ursprüngliche Dictionary ändern oder ein separates Ergebnis erstellen möchten.
Einen Schlüssel ändern, indem Sie seinen Wert einem neuen Schlüssel zuweisen und den alten löschen
Ein Dictionary-Schlüssel lässt sich nicht direkt bearbeiten. Für eine einfache Umbenennung lesen Sie den Wert über den alten Schlüssel aus, weisen ihn dem neuen Schlüssel zu und löschen den alten Eintrag:
fruit = {"A": "Apple", "B": "Banana"}
fruit["C"] = fruit["B"]
del fruit["B"]
print(fruit)
Dadurch wird B in C geändert, während der Wert "Banana" erhalten bleibt. Die Operation ändert fruit selbst. Falls C bereits vorhanden ist, überschreibt die Zuweisung den aktuellen Wert. Prüfen Sie daher, ob der Zielschlüssel frei ist, wenn das für Ihre Daten wichtig ist.
Einen Schlüssel mit dict.pop() ändern
dict.pop() entfernt den angegebenen Schlüssel und gibt dessen Wert zurück. Diesen Wert können Sie direkt dem Ersatzschlüssel zuweisen:
person = {"first_name": "John", "last_name": "Doe", "age": 30}
person["given_name"] = person.pop("first_name")
Nach der Zuweisung enthält person den Schlüssel given_name mit dem bisherigen Wert von first_name. Wie bei einer direkten Zuweisung wird ein bereits vorhandener Wert unter given_name überschrieben. Falls der alte Schlüssel fehlen kann, geben Sie für pop einen Standardwert an, zum Beispiel person.pop("first_name", None). Andernfalls löst der Aufruf für einen fehlenden Schlüssel einen KeyError aus.
Einen oder mehrere Schlüssel ändern, indem Sie ein Dictionary neu aufbauen
Bei mehreren oder bedingten Umbenennungen ordnen Sie jedem alten Schlüssel seinen Ersatz zu und verwenden eine Dictionary-Comprehension. Schlüssel, die nicht in der Zuordnung stehen, bleiben unverändert:
original = {"a": 1, "b": 2, "c": 3}
key_mapping = {"a": "alpha", "b": "beta"}
renamed = {key_mapping.get(key, key): value for key, value in original.items()}
renamed enthält hier alpha, beta und c mit ihren ursprünglichen Werten. Die Comprehension erstellt ein neues Dictionary, sodass original unverändert verfügbar bleibt. Werden zwei Quellschlüssel demselben Zielschlüssel zugeordnet, überschreibt der später zugewiesene Wert den früheren. Wenn alle Werte erhalten bleiben müssen, achten Sie darauf, dass die Zuordnung unterschiedliche Schlüssel ergibt. Dieser Ansatz eignet sich besonders, wenn eine Umbenennung von einer Regel für alle Schlüssel abhängt oder mehrere bekannte Namen gemeinsam geändert werden sollen. Prüfen Sie die Zuordnung vor dem Neuaufbau, wenn Schlüssel der ursprünglichen Daten auf denselben Namen hinauslaufen könnten.
Auch für bedingte Umwandlungen eignet sich diese Methode: Ersetzen Sie key_mapping.get(key, key) durch einen Ausdruck, der für jeden Eintrag den gewünschten Schlüssel zurückgibt. Der Schlüsselausdruck sollte für die verarbeiteten Daten deterministisch sein. Außerdem müssen die resultierenden Schlüssel hashbar sein, wie es für Dictionary-Schlüssel erforderlich ist.
DataFrame-Spalten umbenennen, wenn Dictionary-Schlüssel Tabellendaten darstellen
Wenn Dictionary-Schlüssel den Spaltennamen eines tabellarischen Datensatzes entsprechen, können Sie die Spalten mit DataFrame.rename(columns=...) umbenennen. Ein DataFrame aus einem Dictionary zu erstellen, benennt die Schlüssel im ursprünglichen Dictionary nicht um, sondern erzeugt ein separates Tabellenobjekt. Zum Beispiel lässt sich die Operation so schreiben: df = df.rename(columns={"a": "alpha"}). Sie gibt ein DataFrame mit umbenannter Spalte zurück und lässt das Quelldictionary unverändert. Wenn Sie aus dem Ergebnis wieder ein Dictionary erstellen möchten, wählen Sie eine explizite Ausrichtung, etwa df.to_dict(orient="list"), wenn die Werte Spaltenlisten sind. Für diese Pandas-spezifische Operation muss Pandas in Ihrer Umgebung verfügbar sein. Bei gewöhnlichen Dictionaries sind die integrierte Zuweisung, dict.pop() oder eine Comprehension meist einfacher, da die Datenstruktur dabei nicht umgewandelt werden muss.