Saltar al contenido

# introduccion-a-la-programacion-con-python

Introducción a la programación con Python

Volver a la portada del curso
Lectura (Markdown)

Diccionarios avanzados

Sección 5 · Manejo de Listas y Diccionarios

Diccionarios avanzados

El diccionario es una de las estructuras más usadas de Python. Guarda pares clave-valor y te permite buscar un dato por su nombre en lugar de por su posición. Una vez que dominas sus métodos, escribes código más corto y más claro.

Repaso rápido

Un diccionario se define con llaves y pares clave: valor. Las claves suelen ser cadenas o números, y deben ser únicas.

persona = {"nombre": "Ada", "edad": 30, "activo": True}
print(persona["nombre"])   # Ada
persona["edad"] = 31        # actualiza un valor existente
persona["ciudad"] = "Lima"  # agrega una clave nueva

Acceso seguro con get

Si accedes a una clave que no existe con corchetes, Python lanza KeyError. El método get() evita ese error y te deja definir un valor por defecto.

persona = {"nombre": "Ada"}
print(persona.get("edad"))        # None, no falla
print(persona.get("edad", 0))     # 0 como valor por defecto

Para agregar un valor solo si la clave no existe, setdefault() es directo: devuelve el valor actual o lo crea con el que indiques.

Recorrer un diccionario

El método items() te da clave y valor al mismo tiempo, ideal para un bucle.

precios = {"pan": 2.0, "leche": 1.5, "huevos": 3.2}
for producto, precio in precios.items():
    print(producto, "cuesta", precio)

# solo claves o solo valores
print(list(precios.keys()))
print(list(precios.values()))

Comprensiones de diccionario

Al igual que las listas, los diccionarios admiten comprensiones para construirlos en una línea. Son útiles para transformar datos.

precios = {"pan": 2.0, "leche": 1.5}
con_iva = {producto: precio * 1.16 for producto, precio in precios.items()}
print(con_iva)   # {'pan': 2.32, 'leche': 1.74}

Diccionarios anidados

Un valor puede ser, a su vez, otro diccionario. Así representas datos con estructura, como un registro por cada usuario.

usuarios = {
    "ada": {"edad": 30, "ciudad": "Lima"},
    "linus": {"edad": 45, "ciudad": "Oslo"},
}
print(usuarios["ada"]["ciudad"])   # Lima

Comprobar y combinar diccionarios

El operador in te dice si una clave existe, sin necesidad de acceder a ella. Es la forma más limpia de decidir antes de leer o escribir.

persona = {"nombre": "Ada", "edad": 30}
if "edad" in persona:
    print("tiene edad registrada")
if "ciudad" not in persona:
    print("falta la ciudad")

Para combinar dos diccionarios, el método update() copia los pares de uno en otro; las claves repetidas se sobrescriben con el segundo. Desde Python 3.9 también puedes usar el operador | para obtener un diccionario nuevo sin modificar los originales.

base = {"nombre": "Ada", "edad": 30}
extra = {"edad": 31, "ciudad": "Lima"}
base.update(extra)
print(base)   # {'nombre': 'Ada', 'edad': 31, 'ciudad': 'Lima'}

combinado = {"a": 1} | {"b": 2}
print(combinado)   # {'a': 1, 'b': 2}

Errores comunes

  • Usar corchetes en una clave ausente en lugar de get() y provocar KeyError.
  • Suponer un orden concreto en versiones antiguas; desde Python 3.7 el orden de inserción se conserva.
  • Usar como clave un tipo mutable, como una lista; no está permitido.
  • Modificar el diccionario mientras lo recorres, lo que puede provocar errores.

Cierre

Con get, items, comprensiones y anidamiento cubres la mayoría de los usos reales de un diccionario. En el proyecto final combinarás listas y diccionarios para organizar datos.

Recursos