Un diccionario guarda pares clave → valor, como un diccionario real: buscas una palabra (clave) y encuentras su definición (valor).
Crear y acceder
persona = {
"nombre": "Ana",
"edad": 25,
"ciudad": "Bogotá",
}
print(persona["nombre"]) # Ana
print(persona["edad"]) # 25
persona["profesion"] = "Ingeniera" # agregar nueva clave
persona["edad"] = 26 # actualizar existente
del persona["ciudad"] # eliminar
El error más famoso: KeyError
Acceder a una clave inexistente lanza excepción:
persona["email"] # KeyError: 'email' no existe
Las formas seguras:
persona.get("email") # None (no explota)
persona.get("email", "N/A") # "N/A" → valor por defecto
if "email" in persona: # comprobar existencia
print(persona["email"])
Recorrer un diccionario
precios = {"cafe": 2500, "te": 2000, "cocoa": 3000}
for bebida in precios: # recorre las CLAVES
print(bebida)
for bebida, precio in precios.items(): # clave y valor juntos
print(f"{bebida}: ${precio}")
print(list(precios.keys())) # ['cafe', 'te', 'cocoa']
print(list(precios.values())) # [2500, 2000, 3000]
El patrón más útil del mundo — contar cosas:
conteo = {}
for palabra in ["python", "es", "genial", "python"]:
conteo[palabra] = conteo.get(palabra, 0) + 1
print(conteo) # {'python': 2, 'es': 1, 'genial': 1}
Sets: sin duplicados y ultra rápidos
Un set es una colección sin orden y sin elementos repetidos:
numeros = {1, 2, 2, 3, 3, 3}
print(numeros) # {1, 2, 3} → duplicados eliminados
lista = [1, 2, 2, 3]
sin_duplicados = set(lista) # el truco clásico para deduplicar
vacio = set() # ¡ojo! {} crea un diccionario VACÍO, no un set
Operaciones de conjuntos
python_devs = {"ana", "luis", "maria"}
go_devs = {"luis", "pedro"}
print(python_devs | go_devs) # unión: {'ana', 'luis', 'maria', 'pedro'}
print(python_devs & go_devs) # intersección: {'luis'}
print(python_devs - go_devs) # diferencia: {'ana', 'maria'}
Los sets responden in de forma rapidísima, incluso con millones de elementos. Si vas a hacer muchas búsquedas de pertenencia, usa un set en vez de una lista.
Errores comunes
d = {"a": 1}
d["b"] # KeyError
s = {1, 2, 3}
s[0] # TypeError: los sets NO tienen índice (no hay orden)
d = {[1, 2]: "x"} # TypeError: las claves deben ser inmutables
# (str, int, tupla sí; listas y dicts no)
Resumen
- Diccionario:
clave → valor. Usa.get()para acceder sin riesgo deKeyError .items()recorre clave y valor a la vez;.get(clave, 0) + 1es el patrón de conteo- Sets: sin duplicados, sin orden, búsquedas
ininstantáneas set(lista)deduplica;|,&,-son unión, intersección y diferencia- Las claves de un dict deben ser inmutables