Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Diccionarios (Casilleros de Seguridad)

El Diccionario (dict) es la estructura de almacenamiento más flexible de Python, y si tuvieras que aprender una sola, sería esta. A diferencia de las listas, donde buscas por número de ranura, aquí buscas por nombre propio.

Imagina un banco de Casilleros de Seguridad. Nadie pide “la caja 43”. Piden “la caja de Juan Pérez”.

Fig. 5.3: Un diccionario: claves únicas que localizan valores.

Anatomía de un Diccionario

Todo funciona en parejas Clave : Valor (Key : Value).

  • Clave (Key): La etiqueta en la puerta (p. ej. “Nombre”). Debe ser única.
  • Valor (Value): Lo que hay adentro (p. ej. “Elena”).

Gestión de Casilleros

1. Construcción

Usamos llaves {} y separamos la clave del valor con dos puntos :.

#   Nombre   : Tipo             = { Clave : Valor }
    usuario  : dict[str, str]   = {
        "nombre": "Elena",
        "rol":   "Admin",
        "email": "[email protected]"
    }

2. Recuperación

Usamos la clave entre corchetes para abrir la puerta:

print(usuario["nombre"])  # Sale: "Elena"

Pero ojo con el casillero que no existe: pedir una clave ausente con corchetes rompe el programa con un KeyError.

print(usuario["edad"])  # KeyError: 'edad'  ← el programa se detiene aquí

Cuando no estás seguro de que la clave exista, usa .get(). Devuelve None (o el valor por defecto que tú indiques) en vez de reventar:

print(usuario.get("edad"))          # None, sin error
print(usuario.get("edad", "N/D"))   # "N/D"  (tu valor por defecto)

.get() es la diferencia entre un programa que avisa y uno que se cae. Úsalo siempre que la clave dependa de datos externos: un formulario, un archivo, la respuesta de un usuario.

3. Modificación y Creación

Si usas una clave que ya existe, cambias el contenido. Si usas una clave nueva, Python crea un casillero nuevo mágicamente.

# Modificar existente
usuario["rol"] = "SuperUser"

# Crear nuevo
usuario["telefono"] = "555-0101"

4. Clausura de Casilleros

Cuando un casillero deja de usarse, se desocupa. Tienes dos llaves maestras:

# Cerrar y tirar el contenido
del usuario["telefono"]

# Cerrar pero quedarte con el contenido en la mano
email_guardado: str = usuario.pop("email")
print(email_guardado)  # "[email protected]"

del simplemente elimina la pareja clave-valor. .pop() hace lo mismo, pero te devuelve el valor antes de destruir el casillero. Útil cuando necesitas el dato una última vez.

5. Recorrer el Banco

Casi siempre quieres las parejas completas, y .items() te da clave y valor a la vez:

for clave, valor in usuario.items():
    print(f"{clave}: {valor}")

Si solo necesitas las etiquetas, usa .keys(); si solo los contenidos, .values(). Y para saber si un casillero existe antes de abrirlo, usa in, que en un diccionario mira las claves, no los valores:

if "nombre" in usuario:
    print("Tiene nombre registrado")

(Recorrer con for es tema del Capítulo 8; aquí basta con saber que .items() es la puerta de entrada.)

Cajas dentro de casilleros

Un diccionario suelto describe un producto. Un almacén tiene muchos. La forma natural de guardarlos es una lista donde cada elemento es un diccionario:

inventario: list[dict] = [
    {"nombre": "Tornillos", "precio": 5.5, "stock": 500},
    {"nombre": "Tuercas", "precio": 3.0, "stock": 200},
]

Fíjate en dos cosas. Primera: los valores ya no son puro texto. precio guarda un float y stock un int; un diccionario mezcla tipos sin quejarse. Segunda: para llegar a un dato encadenas los accesos, de afuera hacia adentro.

print(inventario[0]["nombre"])   # "Tornillos": elemento 0, casillero "nombre"
print(inventario[1]["stock"])    # 200

inventario[0] te entrega el primer diccionario completo; el ["nombre"] que sigue abre su casillero. Guárdate esta estructura. La lista de diccionarios es exactamente donde vivirá el almacén entero del proyecto final.

La ventaja: velocidad constante

A Python le toma prácticamente el mismo tiempo localizar un dato en un diccionario de 10 elementos que en uno de 10 millones. No es magia: es la tabla hash que trabaja por debajo. Por eso los diccionarios son la columna vertebral de bases de datos, configuraciones de sistema y cualquier estructura donde el acceso por nombre sea prioritario.