Colecciones avanzadas de Python: defaultdict, Counter, deque, namedtuple, etc.

Aprovechar el módulo collections de Python para crear estructuras de datos potentes

Sumérjase en el módulo de colecciones de Python y explore estructuras de datos avanzadas como defaultdict, Counter, deque y namedtuple. Aprenda a utilizar estas herramientas para simplificar su código y mejorar el rendimiento en las tareas de procesamiento de datos.

Programación
Autor/a
Afiliación
Fecha de publicación

9 de febrero de 2024

Fecha de modificación

9 de mayo de 2025

Palabras clave

Módulo de colecciones de Python, Tutorial de defaultdict, Contador en Python, Uso de deque en Python, Ejemplo de namedtuple, Colecciones avanzadas de Python

Introducción

El módulo integrado collections de Python ofrece varias estructuras de datos potentes que amplían las capacidades de los tipos estándar. En este tutorial, exploraremos algunas de estas colecciones avanzadas, como defaultdict, Counter, deque y namedtuple, y demostraremos cómo pueden simplificar tu código y mejorar el rendimiento al manejar tareas complejas de procesamiento de datos.



defaultdict Subclase

El defaultdict es una subclase del dict integrado que devuelve un valor por defecto cuando falta una clave. Esto elimina la necesidad de comprobar la existencia de claves.

#|label: defaultdict-example
from collections import defaultdict

# Crea un defaultdict con una lista como fábrica predeterminada.
dd = defaultdict(list)

# Añadir valores a claves.
dd["fruits"].append("apple")
dd["fruits"].append("banana")
dd["vegetables"].append("carrot")

print("defaultdict:", dict(dd))

Resultados:

defaultdict: {'fruits': ['apple', 'banana'], 'vegetables': ['carrot']}

Counter Subclase

La clase Counter es útil para contar objetos hashables. Facilitan el recuento de ocurrencias y la realización de operaciones como la búsqueda de los elementos más comunes.

#|label: counter-example
from collections import Counter

data = ["apple", "banana", "apple", "orange", "banana", "apple"]
counter = Counter(data)

print("Counter:", counter)
print("Most common:", counter.most_common(2))

Resultados:

Counter: Counter({'apple': 3, 'banana': 2, 'orange': 1})
Most common: [('apple', 3), ('banana', 2)]

deque Subclase

deque (cola de doble extremo) admite adiciones y extracciones rápidas desde ambos extremos, lo que la hace ideal para implementar colas o pilas.

#|label: deque-example
from collections import deque

# Crear una cola doble y añadir elementos a ambos extremos.
d = deque([1, 2, 3])
d.append(4)          # Añadir a la derecha
d.appendleft(0)      # Añadir a la izquierda

print("Deque:", d)

# Extraer elementos de ambos extremos.
right = d.pop()
left = d.popleft()

print("After popping, deque:", d)
print("Popped from right:", right, "and left:", left)

Resultados:

Deque: deque([0, 1, 2, 3, 4])
After popping, deque: deque([1, 2, 3])
Popped from right: 4 and left: 0

namedtuple Subclase

namedtuple proporciona una forma de crear tipos de objetos ligeros con campos con nombre. Son inmutables y se pueden utilizar como tuplas normales, al tiempo que mejoran la legibilidad del código.

#|label: namedtuple-example
from collections import namedtuple

# Definir una tupla con nombre llamada «Point».
Point = namedtuple("Point", ["x", "y"])

# Crear una instancia Point.
p = Point(x=10, y=20)

print("Namedtuple Point:", p)
print("X coordinate:", p.x)
print("Y coordinate:", p.y)

Resultados:

Namedtuple Point: Point(x=10, y=20)
X coordinate: 10
Y coordinate: 20

Colecciones adicionales

Aunque los ejemplos anteriores cubren las colecciones avanzadas más comunes, el módulo collections de Python también incluye:

  • OrderedDict: Aunque los diccionarios de Python 3.7+ mantienen el orden de inserción, OrderedDict puede ser útil para operaciones de ordenación específicas.
  • ChainMap: Para gestionar varios diccionarios como uno solo.
  • UserDict, UserList y UserString: Para facilitar la subclasificación de tipos integrados.

Conclusión

Las estructuras de datos avanzadas del módulo collections pueden simplificar muchas tareas al proporcionar una funcionalidad integrada que va más allá de los tipos de datos estándar. El uso de herramientas como defaultdict, Counter, deque y namedtuple puede dar lugar a un código más limpio, eficiente y legible. Experimente con estas colecciones para ver cómo pueden mejorar el procesamiento de datos y la lógica de las aplicaciones.

Lecturas adicionales

Feliz programación y disfruta dominando las colecciones avanzadas de Python!

Explorar más artículos

Nota

Aquí hay más artículos de la misma categoría para ayudarte a profundizar en el tema.

placeholder

placeholder
No hay resultados
Volver arriba

Reutilización

Cómo citar

BibTeX
@online{kassambara2024,
  author = {Kassambara, Alboukadel},
  title = {Colecciones avanzadas de Python: defaultdict, Counter, deque,
    namedtuple, etc.},
  date = {2024-02-09},
  url = {https://www.datanovia.com/es/learn/programming/python/additional-tutorials/collections-module.html},
  langid = {es}
}
Por favor, cita este trabajo como:
Kassambara, Alboukadel. 2024. “Colecciones avanzadas de Python: defaultdict, Counter, deque, namedtuple, etc.” February 9, 2024. https://www.datanovia.com/es/learn/programming/python/additional-tutorials/collections-module.html.