Menu

Diccionarios en Python: crear, acceder, actualizar e iterar dict

Los diccionarios son la estructura clave-valor de Python — el tipo de dato al que recurrirás constantemente una vez que pases lo básico.

Un diccionario es una tabla de búsqueda

Las listas se indexan por posición. Los diccionarios se indexan por clave — normalmente un string o un número — y cada clave mapea a un valor. Ese cambio solo desbloquea una categoría enorme de programas: inventarios, configuraciones, payloads JSON, perfiles de usuario, cachés.

main.py
Output
Click Run to see the output here.

Las claves y los valores pueden ser casi cualquier cosa. Las claves deben ser hasheables (así que: números, strings, tuplas; no listas u otros dicts). Los valores no tienen restricción — un dict puede contener cualquier cosa, incluidos otros dicts o listas.

Crear diccionarios

Varias formas, cada una con su sitio:

main.py
Output
Click Run to see the output here.

Leer valores

Dos formas, y la elección importa:

main.py
Output
Click Run to see the output here.

Elige por intención:

  • Usa [] cuando la clave deba estar. Si no está, es un bug y quieres el error ruidoso.
  • Usa .get() cuando "no presente" sea un caso válido. Te deja escribir valores por defecto sin try/except.

Añadir, actualizar, borrar

Asignar a una clave la crea o la actualiza:

main.py
Output
Click Run to see the output here.

update() fusiona otro dict o iterable de pares:

main.py
Output
Click Run to see the output here.

Las claves compartidas en overrides sobrescriben las de settings.

Comprobar una clave

in comprueba las claves, no los valores:

main.py
Output
Click Run to see the output here.

Para comprobar valores específicamente, usa user.values():

main.py
Output
Click Run to see the output here.

Cómo iterar un diccionario

Tienes tres vistas sobre las que puedes iterar:

main.py
Output
Click Run to see the output here.

.items() es lo que usarás la mayor parte del tiempo — te da el par, desempaquetado, listo para usar.

El orden de iteración en Python moderno (3.7+) coincide con el orden de inserción. Un dict no es una "bolsa mágica" — si añades a, luego b, luego c, iterar los devuelve en ese orden. Es una garantía del lenguaje en la que puedes confiar.

Cómo ordenar un diccionario

Los diccionarios preservan el orden de inserción, así que "ordenar" un dict realmente significa construir un nuevo dict cuyas claves se insertan en el orden que quieres:

main.py
Output
Click Run to see the output here.

sorted() devuelve una lista de pares; envolver eso en dict(...) reconstruye un diccionario con el nuevo orden. Si solo necesitas los pares ordenados (no un dict), sáltate la llamada externa a dict().

Cómo fusionar dos diccionarios

Python 3.9+ te da el operador |:

main.py
Output
Click Run to see the output here.

Los valores del dict de la derecha ganan en colisiones de clave. .update() es el equivalente in-place. En versiones más antiguas de Python, usa {**defaults, **overrides}.

El patrón setdefault

Una necesidad común: "si la clave está, usa su valor; si no, pon un default y úsalo".

main.py
Output
Click Run to see the output here.

O, mejor, usa collections.Counter:

main.py
Output
Click Run to see the output here.

Counter es una subclase de dict que cuenta por defecto. Es la elección correcta siempre que estés contando apariciones.

Dict comprehensions

Paralelas a las list comprehensions, pero para construir dicts:

main.py
Output
Click Run to see the output here.

Mismas reglas que las list comprehensions, pero con key: value entre las llaves.

Dict como gemelo de JSON

Los dicts de Python se alinean casi exactamente con los objetos JSON. Convertir entre ellos es una sola llamada:

main.py
Output
Click Run to see the output here.

Por eso los dicts aparecen por todas partes en el trabajo web — tus peticiones y respuestas de API son básicamente manipulación de dicts con algo de red en el medio.

Un ejemplo práctico

Un pequeño programa tipo configuración que guarda un perfil de usuario:

main.py
Output
Click Run to see the output here.

Dicts anidados, valores mutables, .get() con default — el kit básico de herramientas para cualquier dato con forma de registro.

Seguimos

Listas, tuplas, sets, dicts. Con esas cuatro colecciones en la mano, puedes modelar casi cualquier dato con el que te encuentres al principio. A continuación, aprenderemos la list comprehension — la forma compacta que tiene Python de transformar una colección en otra.

Preguntas frecuentes

¿Qué es un diccionario en Python?

Un diccionario es una colección de pares clave-valor. Buscas un valor por su clave — prices['apple'] en vez de prices[0]. Los diccionarios son rápidos para leer y escribir, las claves deben ser únicas, y en Python moderno preservan el orden en el que insertaste los elementos.

¿Cómo añado una clave a un diccionario de Python?

Asígnale un valor: my_dict['new_key'] = 'new value'. Si la clave ya existe, el valor se sobrescribe. Si no, se añade. No hay distinción entre "insertar" y "actualizar" — es la misma sintaxis.

¿Cuál es la diferencia entre dict[key] y dict.get(key)?

dict[key] lanza KeyError si la clave no está. dict.get(key) devuelve None (o un valor por defecto que proporciones) en su lugar. Usa .get() cuando las claves ausentes sean esperables y normales; usa [key] cuando una clave ausente sea un bug.

Aprende a programar con Coddy

COMENZAR