Introdução
O módulo collections
integrado ao Python oferece várias estruturas de dados poderosas que ampliam os recursos dos tipos padrão. Neste tutorial, exploraremos algumas dessas coleções avançadas, como defaultdict, Counter, deque e namedtuple, e demonstraremos como elas podem simplificar seu código e melhorar o desempenho ao lidar com tarefas complexas de processamento de dados.
defaultdict
Subclasse
O defaultdict
é uma subclasse do dict
integrado que retorna um valor padrão quando uma chave está ausente. Isso elimina a necessidade de verificações de existência de chaves.
#|label: defaultdict-example
from collections import defaultdict
# Crie um defaultdict com lista como fábrica padrão.
= defaultdict(list)
dd
# Anexando valores a chaves.
"fruits"].append("apple")
dd["fruits"].append("banana")
dd["vegetables"].append("carrot")
dd[
print("defaultdict:", dict(dd))
Resultados:
defaultdict: {'fruits': ['apple', 'banana'], 'vegetables': ['carrot']}
Counter
Subclasse
A classe Counter
é útil para contar objetos hashable. Elas facilitam a contagem de ocorrências e a execução de operações como encontrar os elementos mais comuns.
#|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
Subclasse
deque
(fila dupla) suporta anexações e popagens rápidas de ambas as extremidades, tornando-a ideal para implementar filas ou pilhas.
#|label: deque-example
from collections import deque
# Crie uma fila dupla e adicione elementos em ambas as extremidades.
= deque([1, 2, 3])
d 4) # Anexando à direita
d.append(0) # Anexar à esquerda
d.appendleft(
print("Deque:", d)
# Popular elementos de ambas as extremidades.
= 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
Subclasse
namedtuple
fornece uma maneira de criar tipos de objetos leves com campos nomeados. Eles são imutáveis e podem ser usados como tuplas regulares, melhorando a legibilidade do código.
#|label: namedtuple-example
from collections import namedtuple
# Defina uma namedtuple chamada 'Point'.
= namedtuple("Point", ["x", "y"])
Point
# Crie uma instância 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
Coleções adicionais
Embora os exemplos acima abranjam as coleções avançadas mais comuns, o módulo collections
do Python também inclui:
- OrderedDict: Embora os dicionários Python 3.7+ mantenham a ordem de inserção, OrderedDict pode ser útil para operações de ordenação específicas.
- ChainMap: Para gerenciar vários dicionários como um só.
- UserDict, UserList e UserString: Para facilitar a subclassificação de tipos embutidos.
Conclusão
Estruturas de dados avançadas no módulo collections
podem simplificar muitas tarefas, fornecendo funcionalidades integradas que vão além dos tipos de dados padrão. O uso de ferramentas como defaultdict, Counter, deque e namedtuple pode resultar em um código mais limpo, eficiente e legível. Experimente essas coleções para ver como elas podem melhorar seu processamento de dados e a lógica da aplicação.
Leitura adicional
- Guia completo para estruturas de dados Python
- Tratamento de estruturas de dados aninhadas em Python
- Operações avançadas em estruturas de dados em Python
- Comparações de desempenho e práticas recomendadas para estruturas de dados Python
Boa programação e aproveite para dominar as coleções avançadas do Python!
Explore mais artigos
Aqui estão mais artigos da mesma categoria para ajudá-lo a se aprofundar no tópico.
Reuso
Citação
@online{kassambara2024,
author = {Kassambara, Alboukadel},
title = {Coleções avançadas do Python: defaultdict, Counter, deque,
namedtuple, etc.},
date = {2024-02-09},
url = {https://www.datanovia.com/pt/learn/programming/python/additional-tutorials/collections-module.html},
langid = {pt}
}