PythonAprende PythonDocumentación

Diccionarios y sets

Pares clave-valor y colecciones sin duplicados.

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 de KeyError
  • .items() recorre clave y valor a la vez; .get(clave, 0) + 1 es el patrón de conteo
  • Sets: sin duplicados, sin orden, búsquedas in instantáneas
  • set(lista) deduplica; |, &, - son unión, intersección y diferencia
  • Las claves de un dict deben ser inmutables

Quiz

  1. 1. ¿Qué pasa si accedes a `precios["cafe"]` cuando la clave "cafe" no existe?

  2. 2. ¿Cuál es el resultado de len({1, 2, 2, 3, 3, 3})?

  3. 3. ¿Qué hace edades.get("ana", 0)?

Ejercicios

Ejercicio 1: Suma del menú

Dado `precios = {"cafe": 2500, "te": 2000}`, imprime la suma de ambos precios. Resultado: 4500

Cargando editor…

Ejercicio 2: Contador de letras

Completa la función para que devuelva un diccionario con cuántas veces aparece cada letra. contar_letras("banana") → {"b": 1, "a": 3, "n": 2}

Cargando editor…