Cambiar el nombre de una clave en el diccionario

Resuelto user469652 asked hace 13 años • 25 respuestas

¿Cómo cambio la clave de una entrada en un diccionario de Python?

user469652 avatar Dec 10 '10 14:12 user469652
Aceptado

Se hace fácilmente en 2 pasos:

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

O en 1 paso:

dictionary[new_key] = dictionary.pop(old_key)

que aumentará KeyErrorsi dictionary[old_key]no está definido. Tenga en cuenta que esto eliminará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
moinudin avatar Dec 10 '2010 07:12 moinudin

si quieres cambiar todas las claves:

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}

Si desea cambiar una sola clave: puede seguir cualquiera de las sugerencias anteriores.

Tauquir avatar Dec 10 '2010 07:12 Tauquir

pop y fresco

>>>a = {1:2, 3:4}
>>>a[5] = a.pop(1)
>>>a
{3: 4, 5: 2}
>>> 
kevpie avatar Dec 10 '2010 07:12 kevpie

En Python 2.7 y superior, puedes usar la comprensión de diccionario: este es un ejemplo que encontré mientras leía un CSV usando un DictReader. El usuario había añadido el sufijo ':' a todos los nombres de las columnas.

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

para deshacerse del ':' final en las claves:

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

Ward avatar Dec 13 '2013 09:12 Ward