W3docs

Diccionarios de Python: Cómo Cambiar Claves y Valores

Aprende a cambiar valores, renombrar claves y actualizar elementos en masa en Python usando asignación, pop() y update() con ejemplos claros.

Los diccionarios de Python permiten almacenar datos como pares clave-valor y actualizarlos libremente después de su creación. Este capítulo cubre todas las formas prácticas de modificar elementos existentes en un diccionario: cambiar un único valor, renombrar una clave, actualizar en masa con update() y manejar diccionarios anidados — incluyendo los casos límite que encontrarás en código real.

Para conocer cómo funcionan los diccionarios, consulta el capítulo Acceder a Elementos del Diccionario. Para agregar entradas nuevas, consulta Agregar Elementos al Diccionario. Para eliminar entradas, consulta Eliminar Elementos del Diccionario.

Cambiar un Valor

La modificación más sencilla es reasignar el valor almacenado bajo una clave existente. Usa la clave como índice en el lado izquierdo de una asignación:

python— editable, runs on the server

Si la clave ya existe, el valor se sobreescribe en su lugar. Las demás entradas no se ven afectadas y el diccionario preserva su orden de inserción (Python 3.7+).

¿Qué sucede cuando la clave no existe?

Si usas una asignación con una clave que no está en el diccionario, Python silenciosamente crea una nueva entrada en lugar de lanzar un error:

prices = {'apple': 1.00, 'banana': 0.50}
prices['mango'] = 2.50   # 'mango' did not exist — a new entry is created
print(prices)
# {'apple': 1.00, 'banana': 0.50, 'mango': 2.50}

Cuando solo quieres actualizar si la clave existe, verifica primero con in:

if 'banana' in prices:
    prices['banana'] = 0.75

Actualización en Masa con update()

dict.update() permite cambiar varios valores a la vez. Pásale un diccionario (o argumentos de palabra clave) de pares clave-valor a aplicar:

inventory = {'apple': 10, 'banana': 5, 'orange': 8}
inventory.update({'banana': 12, 'orange': 3})
print(inventory)
# {'apple': 10, 'banana': 12, 'orange': 3}

Las claves presentes en el argumento sobreescriben los valores existentes; las claves no mencionadas permanecen sin cambios. También puedes pasar argumentos de palabra clave directamente:

inventory.update(apple=20, banana=15)
print(inventory)
# {'apple': 20, 'banana': 15, 'orange': 3}

update() también agrega las claves del argumento que aún no existen en el diccionario destino, lo que lo hace útil para combinar dos diccionarios.

Renombrar (Cambiar) una Clave

Las claves de un diccionario son referencias inmutables — no puedes renombrar una clave directamente. El patrón estándar es agregar una nueva clave con el valor antiguo y eliminar la clave anterior. El método pop() hace ambas cosas en una sola expresión:

python— editable, runs on the server

pop('banana') devuelve 2 y elimina la entrada 'banana'. Asignar ese valor de retorno a my_dict['pear'] crea la entrada renombrada.

Ten en cuenta que la clave renombrada aparece al final del diccionario, no en la posición original de 'banana', porque es una nueva clave que se inserta.

Renombrar una clave cuando no estás seguro de que existe

Si la clave puede estar ausente, pop() lanza un KeyError. Pasa un valor por defecto como segundo argumento para evitar la excepción:

value = my_dict.pop('grape', None)  # returns None if 'grape' is missing
if value is not None:
    my_dict['kiwi'] = value

Cambiar Tanto la Clave Como el Valor

Combina el patrón de renombrado con una reasignación de valor para cambiar ambos a la vez:

python— editable, runs on the server

O condénsalo en un solo paso asignando directamente el valor deseado en lugar del valor extraído con pop:

my_dict = {'apple': 1, 'banana': 2, 'orange': 3}
my_dict.pop('banana')          # remove old key (discard value)
my_dict['pear'] = 4            # insert new key with new value
print(my_dict)
# {'apple': 1, 'orange': 3, 'pear': 4}

Actualizar Elementos en un Diccionario Anidado

Cuando un diccionario contiene otros diccionarios como valores, usa indexación encadenada para alcanzar el valor interno:

catalog = {
    'apple':  {'price': 1.00, 'stock': 50},
    'banana': {'price': 0.50, 'stock': 30},
}

# Update only the price of 'banana'
catalog['banana']['price'] = 0.75
print(catalog['banana'])
# {'price': 0.75, 'stock': 30}

También puedes llamar a update() en el diccionario interno:

catalog['apple'].update({'price': 1.20, 'stock': 45})
print(catalog['apple'])
# {'price': 1.20, 'stock': 45}

Errores Comunes

SituaciónQué sucedeSolución
Asignar a una clave inexistenteCrea una nueva entrada (sin error)Verifica con if key in d primero cuando solo quieres actualizar
Llamar a pop() en una clave inexistenteLanza KeyErrorUsa d.pop(key, default)
El renombrado no conserva la posición originalLa nueva clave va al finalSi el orden importa, reconstruye con una comprensión de diccionario
update() con claves superpuestasSobreescribe silenciosamenteIntencional — ese es el propósito de update()

Reconstruir para conservar el orden de las claves

Si necesitas que la clave renombrada permanezca en su posición original, reconstruye el diccionario con una comprensión:

my_dict = {'apple': 1, 'banana': 2, 'orange': 3}
my_dict = {
    ('pear' if k == 'banana' else k): v
    for k, v in my_dict.items()
}
print(my_dict)
# {'apple': 1, 'pear': 2, 'orange': 3}

Esto itera sobre cada entrada existente y emite la clave renombrada solo donde la condición es verdadera, dejando todo lo demás sin cambios.

Práctica

Práctica
In Python, how can you change the items in a list?
In Python, how can you change the items in a list?
Was this page helpful?