it-swarm.com.de

Ändern Sie den Namen eines Schlüssels im Wörterbuch

Ich möchte den Schlüssel eines Eintrags in einem Python-Wörterbuch ändern.

Gibt es einen einfachen Weg, dies zu tun?

257
user469652

Einfach in 2 Schritten erledigt:

dictionary[new_key] = dictionary[old_key]
del dictionary[old_key]

Oder in einem Schritt:

dictionary[new_key] = dictionary.pop(old_key)

was KeyError erhöht, wenn dictionary[old_key] nicht definiert ist Beachten Sie, dass dieses dictionary[old_key] löscht.

>>> dictionary = { 1: 'one', 2:'two', 3:'three' }
>>> dictionary['ONE'] = dictionary.pop(1)
>>> dictionary
{2: 'two', 3: 'three', 'ONE': 'one'}
>>> dictionary['ONE'] = dictionary.pop(1)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
KeyError: 1
516
marcog

wenn Sie alle Schlüssel ändern möchten:

d = {'x':1, 'y':2, 'z':3}
d1 = {'x':'a', 'y':'b', 'z':'c'}

In [10]: dict((d1[key], value) for (key, value) in d.items())
Out[10]: {'a': 1, 'b': 2, 'c': 3}

wenn Sie einen einzelnen Schlüssel ändern möchten: Sie können mit jedem der oben genannten Vorschläge gehen.

46
Tauquir

pop'n'Fresh

>>>a = {1:2, 3:4}
>>>a[5] = a.pop(1)
>>>a
{3: 4, 5: 2}
>>> 
27
kevpie

In python 2.7 und höher können Sie das Wörterbuchverständnis verwenden: Dies ist ein Beispiel, das ich beim Lesen einer CSV mit einem DictReader erlebt habe. Der Benutzer hatte alle Spaltennamen mit dem Suffix ':' versehen.

{'key1:' :1, 'key2:' : 2, 'key3:' : 3}

um das abschließende ':' in den Schlüsseln loszuwerden:

corrected_dict = { k.replace(':', ''): v for k, v in ori_dict.items() }

22
Ward

Da Schlüssel Wörterbücher zum Nachschlagen von Werten verwenden, können Sie sie nicht wirklich ändern. Am nächsten können Sie den mit dem alten Schlüssel verknüpften Wert speichern, löschen und dann einen neuen Eintrag mit dem Ersatzschlüssel und dem gespeicherten Wert hinzufügen. Einige der anderen Antworten veranschaulichen verschiedene Möglichkeiten, wie dies erreicht werden kann.

6
martineau

Kein direkter Weg dies zu tun, aber Sie können löschen und dann zuweisen

d = {1:2,3:4}

d[newKey] = d[1]
del d[1]

oder Massenschlüssel ändern:

d = dict((changeKey(k), v) for k, v in d.items())
3
AndiDog

Wenn Sie ein komplexes Diktat haben, bedeutet dies, dass es ein Diktat oder eine Liste im Diktat gibt:

myDict = {1:"one",2:{3:"three",4:"four"}}
myDict[2][5] = myDict[2].pop(4)
print myDict

Output
{1: 'one', 2: {3: 'three', 5: 'four'}}
3
Hatem

Um alle Schlüssel im Wörterbuch zu konvertieren

Angenommen, dies ist Ihr Wörterbuch:

>>> sample = {'person-id': '3', 'person-name': 'Bob'}

So konvertieren Sie alle Bindestriche im Beispielwörterbuch in Unterstriche

>>> sample = {key.replace('-', '_'): sample.pop(key) for key in sample.keys()}
>>> sample
>>> {'person_id': '3', 'person_name': 'Bob'}
2
Pranjal Singi

Sie können denselben Wert mit vielen Schlüsseln verknüpfen oder einfach einen Schlüssel entfernen und einen neuen Schlüssel mit demselben Wert erneut hinzufügen.

Zum Beispiel, wenn Sie Schlüssel-> Werte haben:

red->1
blue->2
green->4

es gibt keinen Grund, warum Sie purple->2 nicht hinzufügen oder red->1 entfernen und orange->1 hinzufügen können.

0
DGH

Wenn Sie alle Schlüssel gleichzeitig ändern ... Hier stelle ich die Schlüssel ein.

a = {'making' : 1, 'jumping' : 2, 'climbing' : 1, 'running' : 2}
b = {ps.stem(w) : a[w] for w in a.keys()}
print(b)
>>> {'climb': 1, 'jump': 2, 'make': 1, 'run': 2} #output
d = {1:2,3:4}

nehmen wir an, wir wollen die Schlüssel in die Listenelemente p = ['a', 'b'] ..__ ändern. Der folgende Code wird dies tun:

d=dict(Zip(p,list(d.values()))) 

und wir bekommen

{'a': 2, 'b': 4}
0