Aprende leyendo en orden

Cómo usar los diccionarios de Python (dict)

Aprende el tipo dict de Python: declaraciones clave-valor, añadir, actualizar, eliminar y comprobar existencia con in.

Crear un diccionario

Un diccionario (dict) es un tipo que guarda valores como pares clave-valor.

Mientras que una lista es una caja de la que sacas valores por posición (0, 1, 2…), un dict es una caja de la que sacas valores por nombre (clave): esa es la imagen mental más sencilla.

Estructura de un diccionario
"brand""Toyota""model""Prius""year"2015asocia aasocia aasocia a

Envuélvelo con { } y lista los pares key: value separados por comas.

La clave es el nombre y el valor es el contenido. Las claves deben ser únicas.

# Declarar un diccionario
car = {
    "brand": "Toyota",
    "model": "Prius",
    "year": 2015,
}

print(car)            # {'brand': 'Toyota', 'model': 'Prius', 'year': 2015}
print(type(car))      # <class 'dict'>

# Las claves no tienen que ser cadenas (los números también sirven)
score_by_id = {1: 80, 2: 95, 3: 72}
print(score_by_id[2]) # 95

Cuándo usar list y cuándo dict

Si importa el orden o la posición, usa list. Si quieres buscar por nombre, usa dict.

Por ejemplo, 'un ranking de 3 puntajes' es una list; 'puntajes por usuario' es un dict.

Incluso con los mismos datos, cómo quieres acceder a ellos decide cuál elegir.

Vamos a gestionar un perfil de usuario con un diccionario.

① Crea un dict user con estos 3 pares clave-valor:

- "name": "Ana"

- "age": 28

- "email": "ana@example.com"

② Usa user["name"] para imprimir el nombre y user["age"] para imprimir la edad con print().

Editor Python

Ejecutar el código para ver el resultado

Acceder a valores — [] vs .get()

Hay dos formas de sacar un valor de un dict, y la diferencia clave es cómo se comportan cuando la clave no existe.

Cómo se diferencia [] de .get()
car["color"](ausente)[ ]KeyErrorlanzadocar.get("color").get()Devuelve None(sin error)accesosi faltaaccesosi falta

Intenta sacar una clave inexistente del dict car con [] para ver qué pasa.

① Imprime car["brand"] con print().

② Imprime car["color"] con print() y confirma que se lanza KeyError.

Editor Python

Ejecutar el código para ver el resultado

.get() te permite pasar un valor por defecto como segundo argumento: esa es la parte útil.

Puedes decir 'devuelve esto si la clave no está' en una sola línea.

car = {"brand": "Toyota", "model": "Prius", "year": 2015}

# ① Acceso con []
print(car["brand"])        # Toyota
# print(car["color"])      # KeyError: 'color'

# ② Acceso con .get()
print(car.get("brand"))                 # Toyota
print(car.get("color"))                 # None
print(car.get("color", "Desconocido"))  # Desconocido (se devuelve el segundo argumento)

.get() para seguir ejecutando, [] para ser estricto

Si una clave ausente significa que algo está roto, [] es más seguro: saca el problema a la luz temprano como error.

Si está bien de cualquier forma (por ejemplo, configuraciones opcionales), pasar un valor por defecto a .get() se lee mejor y reduce el manejo de excepciones (lo veremos más adelante).

Tienes listo un dict de configuración de usuario config = {"theme": "dark", "lang": "es"}.

① Saca el tema actual con config["theme"] e imprímelo.

② Usa .get() para obtener "font_size", usando 16 como valor por defecto si no está definido.

Editor Python

Ejecutar el código para ver el resultado

Agregar, actualizar, eliminar

Los dicts, al igual que las listas, se pueden modificar después de crearlos.

La forma más sencilla de agregar, actualizar y eliminar es la asignación directa.

Qué hacerSintaxisPunto clave
Agregar o actualizard["key"] = valueActualiza si la clave existe, agrega si no
Actualizar varias a la vezd.update(other_dict)Sobrescribe las claves coincidentes y agrega las nuevas
Extraer y eliminarv = d.pop("key")Elimina y guarda el valor. Si la clave falta, lanza KeyError
Vaciarlod.clear()El objeto dict permanece, el contenido se vacía
Eliminar la variabledel dElimina d en sí. Las referencias posteriores lanzan error
Cómo se comporta d[key] = value
car(sin "color")car["color"]= "white"Agregadocar(con "year")car["year"]= 2024Sobrescritoasignarclave ausenteasignarclave existente

La misma sintaxis agrega cuando la clave falta y actualiza cuando ya está.

El dict decide 'crear si falta, sobrescribir si existe' por ti.

car = {"brand": "Toyota", "model": "Prius", "year": 2015}

# Agregar (nueva clave)
car["color"] = "white"
print(car)
# {'brand': 'Toyota', 'model': 'Prius', 'year': 2015, 'color': 'white'}

# Actualizar (clave existente)
car["year"] = 2024
print(car["year"])   # 2024

# Actualizar varias a la vez
car.update({"country": "JP", "model": "Camry"})
print(car["model"])    # Camry (sobrescrito)
print(car["country"])  # JP (recién agregado)

# Extraer y eliminar
old_year = car.pop("year")
print(old_year)        # 2024
# print(car["year"])   # KeyError (ya no está)

# Vaciarlo
car.clear()
print(car)             # {}

Edita un dict de información de usuario.

Ya tienes user = {"name": "Ana", "age": 28}.

① Actualiza "age" a 29.

② Agrega "email": "ana@example.com" como nueva entrada.

③ Usa update() para aplicar "country": "JP" y "age": 30 a la vez, luego imprime el user final.

Editor Python

Ejecutar el código para ver el resultado

Listar claves/valores y comprobar existencia

Por último: las herramientas para inspeccionar un dict.

Hay 4 principales: keys() / values() / items() / el operador in.

  • keys() — devuelve la lista de claves (dict_keys(['brand', 'model', ...]))
  • values() — devuelve la lista de valores
  • items() — devuelve la lista de pares clave-valor (normalmente junto con un bucle for)
  • "key" in dict — devuelve True / False según si la clave existe
Las 4 herramientas de un vistazo
car.keys()lista de clavescar.values()lista de valorescar.items()lista de pares"key"in carTrue /False

Mismo dict, distintas llamadas según lo que quieras extraer.

keys / values / items devuelven listas; in devuelve True / False.

car = {"brand": "Toyota", "model": "Prius", "year": 2015}

print(car.keys())     # dict_keys(['brand', 'model', 'year'])
print(car.values())   # dict_values(['Toyota', 'Prius', 2015])
print(car.items())    # dict_items([('brand', 'Toyota'), ...])

# Comprobar la existencia de una clave (normalmente combinado con if)
print("brand" in car)  # True
print("color" in car)  # False

if "brand" in car:
    print("Marca: " + car["brand"])
else:
    print("Sin información de marca")

Combinar for con items() (referencia)

Para iterar sobre un dict elemento por elemento, la forma estándar es for key, value in car.items():.

Cubriremos for en un capítulo posterior, así que no profundizaremos aquí, pero recuerda solo esto: items() te permite sacar la clave y el valor juntos.

A partir de la lista de stock stock = {"apple": 5, "banana": 0, "grape": 12}, escribe código que compruebe si una fruta dada está en stock y liste las claves.

① Usa in para comprobar si "banana" es una clave en stock e imprime el resultado.

② Para target = "lemon", imprime "{fruit} in stock: {count}" si existe, o "No disponible" en caso contrario (la plantilla de if está en los comentarios).

③ Usa stock.keys() para tomar solo las claves, envuélvelo con list() e imprímelo (la lista de nombres de fruta).

Editor Python

Ejecutar el código para ver el resultado

En este artículo aprendiste cómo declarar un dict, cómo se diferencian [] y .get() al acceder, cómo agregar, actualizar y eliminar entradas, y cómo comprobar la existencia de claves y listar el contenido.

Los dicts aparecen por todas partes en el trabajo real: información de usuarios, configuraciones, stock, resultados resumidos. Una vez que interiorices la imagen de una caja que consultas por clave, te sentirás como en casa con el procesamiento de datos que viene a continuación.

QUIZ

Verificación de conocimientos

Responde cada pregunta una a una.

Pregunta 1Para d = {"a": 1, "b": 2}, ¿cuál no lanza un error al buscar una clave ausente?

Pregunta 2¿Tras ejecutar d["a"] = 2 sobre d = {"a": 1}, cuánto vale d?

Pregunta 3¿Qué método devuelve la lista de claves?