Listas y diccionarios en Python
Al finalizar este tema
Podrás explicar la diferencia entre listas y diccionarios y elegir cuál usar según el caso.
Listas: colecciones ordenadas
Una lista es un contenedor que almacena varios valores en orden. Se crea con corchetes ([]).
fruits = ["manzana", "plátano", "uva"]
# Indexaciónprint(fruits[0]) # 'manzana'print(fruits[-1]) # 'uva'
# Modificaciónfruits[1] = "fresa" # ['manzana', 'fresa', 'uva']
# Añadir y eliminarfruits.append("mango") # Añade al finalfruits.insert(0, "sandía") # Inserta en la posición 0fruits.remove("uva") # Elimina por valordel fruits[0] # Elimina por índiceLas listas son mutables. Después de su creación, se pueden modificar, añadir o eliminar elementos libremente.
Recorrido y procesamiento de listas
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
# Iteraciónfor n in numbers: print(n, end=" ") # 3 1 4 1 5 9 2 6
# Ordenaciónsorted_nums = sorted(numbers) # [1, 1, 2, 3, 4, 5, 6, 9] — conserva el originalnumbers.sort() # Ordena el propio original
# Funciones integradas útilesprint(len(numbers)) # 8print(sum(numbers)) # 31print(min(numbers)) # 1print(max(numbers)) # 9
# Comprensión de listas: crea una lista nueva en una líneasquares = [x ** 2 for x in range(5)]# [0, 1, 4, 9, 16]La comprensión de listas es una forma de comprimir un bucle for en una sola línea. Es muy común verla en el código Python, por lo que es importante familiarizarse con ella.
Diccionarios: un almacén de búsqueda por nombre
Los diccionarios almacenan datos en pares de clave (key) y valor (value). Se crean utilizando llaves ({}).
user = { "name": "Carlos", "age": 30, "email": "hoon@example.com"}
# Consultaprint(user["name"]) # 'Carlos'print(user.get("phone")) # None (devuelve None en vez de un error)
# Añadir y modificaruser["phone"] = "010-1234" # Añade si no existe la claveuser["age"] = 31 # Modifica si ya existe
# Eliminacióndel user["email"]Si una lista se busca por "qué posición" (índice), un diccionario se busca por "qué nombre tiene" (clave). Las claves suelen ser cadenas de texto, pero también pueden ser números o tuplas.
Recorrido de diccionarios
scores = {"lengua": 90, "inglés": 85, "matemáticas": 95}
# Iteración por clavesfor subject in scores: print(subject) # lengua, inglés, matemáticas
# Iteración simultánea por claves y valoresfor subject, score in scores.items(): print(f"{subject}: {score} puntos")
# Iteración solo por valorestotal = sum(scores.values())print(f"Puntuación total: {total}") # 270
# Comprueba si existe una claveif "ciencias" in scores: print(scores["ciencias"])else: print("No hay puntuación de ciencias").items() devuelve pares (clave, valor). .keys() devuelve solo las claves y .values() devuelve solo los valores.
Listas vs. diccionarios: ¿cuándo usar cada uno?
| Situación | Opción | Razón |
|---|---|---|
| El orden es importante (1.º, 2.º, 3.º...) | Lista | Garantiza el orden mediante índices |
| Se debe buscar por nombre ("name", "age") | Diccionario | Acceso inmediato mediante claves |
| Se permiten valores duplicados | Lista | [1, 1, 2, 3] es posible |
| Las claves deben ser únicas | Diccionario | Insertar la misma clave dos veces sobrescribe el valor |
| Búsqueda en 1 millón de registros | Diccionario | Búsqueda por clave O(1) vs. búsqueda en lista O(n) |
El patrón más común en la práctica es una lista de diccionarios. Piense en las tablas de una base de datos.
users = [ {"name": "Carlos", "age": 30}, {"name": "Ana", "age": 25}, {"name": "Pablo", "age": 35},]
# Filtra solo personas de 30 años o másseniors = [u for u in users if u["age"] >= 30]Los archivos JSON, las respuestas de las API y los archivos de configuración suelen tener este formato de "lista de diccionarios". Si puedes combinar estos dos tipos de datos con fluidez, habrás adquirido las bases del procesamiento de datos en Python.