Conceptos básicos de estructuras de datos
9 ejemplos para empezar con los contenedores integrados de Python: 6 básicos y 3 intermedios.
Busca en todas las páginas de la documentación
9 ejemplos para empezar con los contenedores integrados de Python: 6 básicos y 3 intermedios.
Añade, indexa y corta secuencias.
items = ["a", "b", "c"]
items.append("d")
first = items[0]
middle = items[1:3]Relacionado: Listas y tuplas - ordenación y bisect
Agrupa valores relacionados que no deben cambiar.
point = (10, 20)
x, y = point
record = ("ada", 1842)(42,).for.Relacionado: Inmutabilidad y Hashabilidad - cuándo las tuplas son claves de diccionario
Búsqueda rápida por clave hasheable.
user = {"id": 1, "name": "Ada"}
user["email"] = "ada@example.com"
for key, value in user.items():
print(key, value)Relacionado: Diccionarios - fusión y vistas
Pertenencia y álgebra de conjuntos.
tags = {"python", "data", "python"}
tags.add("ml")
assert "data" in tags
common = {"a", "b"} & {"b", "c"} # {"b"}{} solo para diccionarios; los conjuntos necesitan set() o {"x"} con valores.in: ideal para comprobaciones de deduplicación.|, &, -.Relacionado: Sets y Frozensets - frozenset como clave de diccionario
| Operación | list | dict | set |
|---|---|---|---|
| Índice i | O(1) | - | - |
| Pertenencia | O(n) | O(1)* | O(1)* |
| Añadir | O(1)* | - | - |
| Insertar en medio | O(n) | - | - |
*Caso promedio; las colisiones de hash en el peor de los casos degradan dict/set.
set/dict cuando necesites pertenencia rápida.list cuando el orden y los duplicados importen con acceso por índice.Relacionado: Elegir la estructura de datos correcta - guía de decisión
Añadido/eliminación rápida desde ambos extremos.
from collections import deque
queue: deque[str] = deque()
queue.append("job-1")
queue.append("job-2")
next_job = queue.popleft()list.pop(0) es O(n); deque.popleft() es O(1).maxlen opcional elimina automáticamente los elementos más antiguos.heapq para ordenar por prioridad.Relacionado: Módulo collections - Counter y defaultdict
Evita comprobaciones manuales de existencia de claves al crear grupos.
from collections import defaultdict
by_role: defaultdict[str, list[str]] = defaultdict(list)
for name, role in [("Ada", "admin"), ("Linus", "dev"), ("Guido", "dev")]:
by_role[role].append(name)setdefault cuando el valor predeterminado es un objeto mutable nuevo.Relacionado: Módulo collections - API completa
Cuenta elementos hasheables en una sola pasada.
from collections import Counter
words = ["a", "b", "a", "c", "a", "b"]
counts = Counter(words)
print(counts.most_common(2)) # [('a', 3), ('b', 2)]elements() expande los recuentos de nuevo a elementos repetidos.Acceso a campos legible sin una clase completa.
from typing import NamedTuple
class Point(NamedTuple):
x: int
y: int
p = Point(3, 4)
print(p.x, p.y)dataclass suele ser mejor cuando necesitas valores predeterminados o métodos.TypedDict se adapta a diccionarios con formato JSON que permanecen como diccionarios en tiempo de ejecución.Relacionado: TypedDict y NamedTuple - tipado de registros
Versiones de la pila: Esta página se escribió para Python 3.14.0 (estable 3.14, mantenimiento 3.13), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+ y uv 0.6+.
Revisado por Chris St. John·Última actualización: 16 jul 2026