Ich möchte den Schlüssel eines Eintrags in einem Python-Wörterbuch ändern.
Gibt es einen einfachen Weg, dies zu tun?
Ich möchte den Schlüssel eines Eintrags in einem Python-Wörterbuch ändern.
Gibt es einen einfachen Weg, dies zu tun?
Antworten:
Einfach in 2 Schritten erledigt:
dictionary[new_key] = dictionary[old_key]
del dictionary[old_key]
Oder in 1 Schritt:
dictionary[new_key] = dictionary.pop(old_key)
was erhöht, KeyError
wenn dictionary[old_key]
undefiniert ist. Beachten Sie, dass dies wird löschen dictionary[old_key]
.
>>> 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
dict[new_value] = dict.pop(old_value, some_default_value)
vermeiden
old_key
von der Position von new_key
.
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 fortfahren.
{ d1[key] : value for key, value in d.items() }
In Python 2.7 und höher können Sie das Wörterbuchverständnis verwenden: Dies ist ein Beispiel, das mir beim Lesen einer CSV mit einem DictReader begegnet ist. Der Benutzer hatte alle Spaltennamen mit ':' versehen.
ori_dict = {'key1:' : 1, 'key2:' : 2, 'key3:' : 3}
um das nachfolgende ':' in den Tasten loszuwerden:
corrected_dict = { k.replace(':', ''): v for k, v in ori_dict.items() }
Da Wörterbücher zum Nachschlagen von Werten verwendet werden, können Sie sie nicht wirklich ändern. Das nächste, was Sie tun können, ist, den mit dem alten Schlüssel verknüpften Wert zu speichern, ihn zu löschen und dann einen neuen Eintrag mit dem Ersatzschlüssel und dem gespeicherten Wert hinzuzufügen. Einige der anderen Antworten veranschaulichen verschiedene Möglichkeiten, wie dies erreicht werden kann.
So konvertieren Sie alle Schlüssel im Wörterbuch
Angenommen, dies ist Ihr Wörterbuch:
>>> sample = {'person-id': '3', 'person-name': 'Bob'}
So konvertieren Sie alle Bindestriche in Unterstriche im Beispielwörterbuchschlüssel:
>>> sample = {key.replace('-', '_'): sample.pop(key) for key in sample.keys()}
>>> sample
>>> {'person_id': '3', 'person_name': 'Bob'}
d = {1:2,3:4}
Angenommen, wir möchten die Schlüssel in die Listenelemente p = ['a', 'b'] ändern. Der folgende Code reicht aus:
d=dict(zip(p,list(d.values())))
und wir bekommen
{'a': 2, 'b': 4}
Sie können denselben Wert vielen Schlüsseln zuordnen 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 nicht hinzufügen purple->2
oder entfernen red->1
und hinzufügen könnenorange->1
Bei gleichzeitiger Änderung aller Tasten. Hier drücke ich die Schlüssel.
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
Ich habe diese genaue Antwort nicht gesehen:
dict['key'] = value
Sie können dies sogar für Objektattribute tun. Machen Sie sie zu einem Wörterbuch, indem Sie dies tun:
dict = vars(obj)
Dann können Sie die Objektattribute wie ein Wörterbuch bearbeiten:
dict['attribute'] = value