Für ein normales Wörterbuch können Sie Folgendes verwenden:
mydict[k_neu] = mydict.pop(k_alt)
Dadurch wird das Element ans Ende des Wörterbuchs verschoben, es sei denn, k_neu
war bereits vorhanden, in welchem Fall der Wert überschrieben wird.
Für ein Python 3.7+ Wörterbuch, bei dem Sie die Reihenfolge zusätzlich erhalten möchten, ist es am einfachsten, eine vollständig neue Instanz neu aufzubauen. Zum Beispiel die Umbenennung des Schlüssels 2
in 'zwei'
:
>>> d = {0:0, 1:1, 2:2, 3:3}
>>> {"zwei" if k == 2 else k:v for k,v in d.items()}
{0: 0, 1: 1, 'zwei': 2, 3: 3}
Dasselbe gilt für ein OrderedDict
, bei dem Sie keine Wörterbuch-Verständlichkeitssyntax verwenden können, aber Sie können einen Generatorausdruck verwenden:
OrderedDict((k_neu if k == k_alt else k, v) for k, v in od.items())
Das Ändern des Schlüssels selbst, wie in der Frage verlangt, ist unpraktisch, da Schlüssel hashbar sind, was normalerweise bedeutet, dass sie unveränderlich und nicht geändert werden können.