Quiero cambiar la clave de una entrada en un diccionario de Python.
¿Hay una manera directa de hacer esto?
python
dictionary
sequence
user469652
fuente
fuente
Respuestas:
Fácilmente hecho en 2 pasos:
O en 1 paso:
que aumentará
KeyError
sidictionary[old_key]
no está definido. Tenga en cuenta que esto se eliminarádictionary[old_key]
.fuente
dict[new_value] = dict.pop(old_value, some_default_value)
para evitar esoold_key
será diferente de la posición denew_key
.si quieres cambiar todas las claves:
si desea cambiar una sola clave: puede ir con cualquiera de las sugerencias anteriores.
fuente
{ d1[key] : value for key, value in d.items() }
pop'n'fresh
fuente
En Python 2.7 y superior, puede usar la comprensión del diccionario: este es un ejemplo que encontré al leer un CSV usando un DictReader. El usuario había sufijado todos los nombres de columna con ':'
ori_dict = {'key1:' : 1, 'key2:' : 2, 'key3:' : 3}
para deshacerse del ':' final en las teclas:
corrected_dict = { k.replace(':', ''): v for k, v in ori_dict.items() }
fuente
Como las claves son las que usan los diccionarios para buscar valores, realmente no puede cambiarlas. Lo más cercano que puede hacer es guardar el valor asociado con la clave anterior, eliminarlo y luego agregar una nueva entrada con la clave de reemplazo y el valor guardado. Varias de las otras respuestas ilustran diferentes maneras en que esto se puede lograr.
fuente
Si tiene un dict complejo, significa que hay un dict o una lista dentro del dict:
fuente
No hay forma directa de hacer esto, pero puede eliminar-luego-asignar
o hacer cambios clave en masa:
fuente
d = { changeKey(k): v for k, v in d.items()}
Para convertir todas las claves en el diccionario
Supongamos que este es su diccionario:
Para convertir todos los guiones a guiones bajos en la clave de diccionario de muestra:
fuente
supongamos que queremos cambiar las claves de los elementos de la lista p = ['a', 'b']. hará el siguiente código:
y obtenemos
fuente
Puede asociar el mismo valor con muchas claves, o simplemente eliminar una clave y volver a agregar una clave nueva con el mismo valor.
Por ejemplo, si tiene claves-> valores:
no hay razón para que no pueda agregar
purple->2
o quitarred->1
y agregarorange->1
fuente
En caso de cambiar todas las claves a la vez. Aquí estoy derivando las llaves.
fuente
No he visto esta respuesta exacta:
Incluso puede hacer esto para atributos de objeto. Conviértalos en un diccionario haciendo esto:
Luego puede manipular los atributos del objeto como lo haría con un diccionario:
fuente