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.

Esta página incluye editores ejecutables: edita, ejecuta y ve el resultado al instante.

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.

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:

Leer valores

Dos formas, y la elección importa:

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:

update() fusiona otro dict o iterable de pares:

Las claves compartidas en overrides sobrescriben las de settings.

Comprobar una clave

in comprueba las claves, no los valores:

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

Cómo iterar un diccionario

Tienes tres vistas sobre las que puedes iterar:

.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:

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 |:

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".

O, mejor, usa collections.Counter:

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:

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:

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:

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.

Coddy programming languages illustration

Aprende a programar con Coddy

COMENZAR