Coleções avançadas do Python: defaultdict, Counter, deque, namedtuple, etc.

Aproveitando o módulo collections do Python para estruturas de dados poderosas

Mergulhe no módulo de coleções do Python e explore estruturas de dados avançadas, como defaultdict, Counter, deque e namedtuple. Aprenda a usar essas ferramentas para simplificar seu código e melhorar o desempenho em tarefas de processamento de dados.

Programação
Autor
Afiliação
Data de Publicação

9 de fevereiro de 2024

Data de Modificação

29 de abril de 2025

Palavras-chave

Módulo de coleções Python, Tutorial sobre defaultdict, Contador em Python, Uso de deque em Python, Exemplo de namedtuple, Coleções Python avançadas

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.
dd = defaultdict(list)

# Anexando valores a chaves.
dd["fruits"].append("apple")
dd["fruits"].append("banana")
dd["vegetables"].append("carrot")

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

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 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.
d = deque([1, 2, 3])
d.append(4)          # Anexando à direita
d.appendleft(0)      # Anexar à esquerda

print("Deque:", d)

# Popular elementos de ambas as extremidades.
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 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'.
Point = namedtuple("Point", ["x", "y"])

# Crie uma instância 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

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

Boa programação e aproveite para dominar as coleções avançadas do Python!

Explore mais artigos

Nota

Aqui estão mais artigos da mesma categoria para ajudá-lo a se aprofundar no tópico.

placeholder

placeholder
Nenhum item correspondente
De volta ao topo

Reuso

Citação

BibTeX
@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}
}
Por favor, cite este trabalho como:
Kassambara, Alboukadel. 2024. “Coleções avançadas do Python: defaultdict, Counter, deque, namedtuple, etc.” February 9, 2024. https://www.datanovia.com/pt/learn/programming/python/additional-tutorials/collections-module.html.