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.
= defaultdict(list)
dd
# Añadir valores a claves.
"fruits"].append("apple")
dd["fruits"].append("banana")
dd["vegetables"].append("carrot")
dd[
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
= ["apple", "banana", "apple", "orange", "banana", "apple"]
data = Counter(data)
counter
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.
= deque([1, 2, 3])
d 4) # Añadir a la derecha
d.append(0) # Añadir a la izquierda
d.appendleft(
print("Deque:", d)
# Extraer elementos de ambos extremos.
= d.pop()
right = d.popleft()
left
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».
= namedtuple("Point", ["x", "y"])
Point
# Crear una instancia Point.
= Point(x=10, y=20)
p
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
- Guía completa de estructuras de datos en Python
- Manejo de estructuras de datos anidadas en Python
- Operaciones avanzadas en estructuras de datos en Python
- Comparaciones de rendimiento y mejores prácticas para estructuras de datos en Python
Feliz programación y disfruta dominando las colecciones avanzadas de Python!
Explorar más artículos
Aquí hay más artículos de la misma categoría para ayudarte a profundizar en el tema.
Reutilización
Cómo citar
@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}
}