Lección 7 de 8 35 min

Listas y diccionarios: trabaja con colecciones de datos

Un programa de verdad raramente trabaja con un solo dato. Trabaja con listas de clientes, colecciones de productos, registros de usuarios. Python tiene dos estructuras para esto que usarás en prácticamente cada proyecto: las listas y los diccionarios.

Listas

Una lista es una secuencia ordenada de elementos. Puede contener tipos mixtos, aunque en la práctica suelen ser del mismo tipo.

nombres = ["Ana", "Carlos", "María", "Joaquín"]
precios = [9.99, 49.90, 19.99, 99.00]
mixta = [42, "texto", True, 3.14]  # posible pero raro

Acceso y modificación

print(nombres[0])      # "Ana" — el índice empieza en 0
print(nombres[-1])     # "Joaquín" — el último elemento
nombres[1] = "Pedro"   # modifica el segundo elemento
print(nombres[1:3])    # ["Pedro", "María"] — slice (del 1 al 3, sin incluir)

Métodos más usados

nombres.append("Laura")      # añade al final
nombres.insert(0, "Zara")    # inserta en la posición 0
nombres.remove("Ana")        # elimina la primera "Ana"
eliminado = nombres.pop()    # elimina y devuelve el último
nombres.sort()               # ordena alfabéticamente (modifica la lista)
ordenada = sorted(nombres)   # devuelve una lista nueva ordenada
print(len(nombres))          # número de elementos
print("Laura" in nombres)    # True/False — pertenencia

Diccionarios

Un diccionario almacena pares clave-valor. Es la estructura ideal cuando necesitas acceder a datos por un nombre, no por una posición.

usuario = {
    "nombre": "María García",
    "email": "maria@ejemplo.com",
    "edad": 28,
    "activo": True
}

Acceso y modificación

print(usuario["nombre"])          # "María García"
print(usuario.get("telefono", "No registrado"))  # clave inexistente → valor por defecto

usuario["ciudad"] = "Madrid"      # añade clave nueva
usuario["edad"] = 29              # modifica valor existente
del usuario["activo"]             # elimina la clave

Iterar sobre un diccionario

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

print(usuario.keys())    # todas las claves
print(usuario.values())  # todos los valores

Lista de diccionarios — el patrón más útil

productos = [
    {"nombre": "Curso Python", "precio": 0, "lecciones": 8},
    {"nombre": "Curso IA PHP", "precio": 0, "lecciones": 7},
    {"nombre": "Curso Symfony", "precio": 0, "lecciones": 6},
]

for p in productos:
    print(f"{p['nombre']} — {p['lecciones']} lecciones — {p['precio']}€")

Ejercicio práctico

Crea agenda.py:

contactos = []

def añadir(nombre, telefono):
    contactos.append({"nombre": nombre, "telefono": telefono})

def buscar(nombre):
    for c in contactos:
        if c["nombre"].lower() == nombre.lower():
            return c["telefono"]
    return "No encontrado"

añadir("Ana", "600111222")
añadir("Carlos", "611333444")
añadir("María", "622555666")

consulta = input("¿A quién buscas? ")
print(f"Teléfono: {buscar(consulta)}")

Checklist antes de marcar completada

  • Sabes la diferencia entre lista (acceso por índice) y diccionario (acceso por clave).
  • Dominas append, remove, pop y len en listas.
  • Sabes acceder a claves de un diccionario con .get() para evitar errores.
  • Has ejecutado y entendido agenda.py.

Última lección: lo que puedes hacer ahora con Python y los siguientes pasos reales — IA, datos, automatización. Además desbloqueas tu certificado.

📝 Comprueba lo aprendido

Responde estas 4 preguntas y acierta al menos el 60% para desbloquear el botón "Marcar como completada".

1 ¿Cuál es la diferencia clave entre una lista y un diccionario?

2 ¿Qué hace `usuario.get("telefono", "No registrado")`?

3 `nombres[-1]` devuelve...

4 ¿Qué estructura usarías para guardar los datos de un usuario (nombre, email, edad)?

Cuando termines, guarda tu avance. Así podrás continuar desde tu panel y desbloquear el certificado al completar el curso.