Pregunta 1Para d = {"a": 1, "b": 2}, ¿cuál no lanza un error al buscar una clave ausente?
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.
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.
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.
.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).
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é hacer | Sintaxis | Punto clave |
|---|---|---|
| Agregar o actualizar | d["key"] = value | Actualiza si la clave existe, agrega si no |
| Actualizar varias a la vez | d.update(other_dict) | Sobrescribe las claves coincidentes y agrega las nuevas |
| Extraer y eliminar | v = d.pop("key") | Elimina y guarda el valor. Si la clave falta, lanza KeyError |
| Vaciarlo | d.clear() | El objeto dict permanece, el contenido se vacía |
| Eliminar la variable | del d | Elimina d en sí. Las referencias posteriores lanzan error |
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) # {}
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
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.
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.
Verificación de conocimientos
Responde cada pregunta una a una.
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?