Cambiar el nombre de una clave en el diccionario
¿Cómo cambio la clave de una entrada en un diccionario de Python?
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á KeyError
si 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
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.
pop y fresco
>>>a = {1:2, 3:4}
>>>a[5] = a.pop(1)
>>>a
{3: 4, 5: 2}
>>>
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() }