Módulo de coleções Python: tipos avançados de contêineres
Aprenda a usar o módulo de coleções do Python. Master Counter, defaultdict, nomeadotuple, deque e como simplificar estruturas de dados complexas.
Visão geral
Embora os contêineres básicos do Python – listas, dicionários, conjuntos e tuplas – sejam suficientes para a maioria das tarefas, programas complexos geralmente exigem estruturas de dados especializadas. Para resolver isso, Python fornece o módulo integrado `coleções`. Este módulo contém tipos de dados de contêiner de alto desempenho projetados para resolver tarefas comuns de programação com mais eficiência e com sintaxe mais limpa e autodocumentada.
Entre as classes mais úteis está `defaultdict`, que atua como um dicionário normal, mas inicializa automaticamente as chaves ausentes com um valor padrão (como uma lista vazia ou inteiro zero), eliminando a necessidade de verificações detalhadas de chaves. Outra potência é a classe `Counter`, otimizada especificamente para registrar ocorrências de itens em um iterável. Para filas e pilhas rápidas, `deque` (fila dupla) oferece inserções e exclusões `O(1)` em ambas as extremidades, ao contrário de listas que sofrem de deslocamentos `O(N)`.
Finalmente, o módulo oferece `namedtuple`, que cria objetos leves, semelhantes a tuplas, que podem ser acessados usando notação de ponto, bem como índices tradicionais (por exemplo, `point.x` em vez de `point[0]`). Isso oferece a velocidade e a imutabilidade de uma tupla com a legibilidade de uma classe. Incorporar o módulo de coleções em seu fluxo de trabalho garante que seu código permaneça elegante, com bom desempenho e limpo.
Saída de código e execução
Contando palavras usando Counter e organizando grupos de dicionários com defaultdict.
from collections import Counter, defaultdict, namedtuple
# 1. Counter: Tallying items
votes = ["yes", "no", "yes", "yes", "no"]
vote_counts = Counter(votes)
print(f"Vote Counts: {vote_counts}")
print(f"Most common: {vote_counts.most_common(1)}")
# 2. defaultdict: Grouping values
grouped_data = defaultdict(list)
grouped_data["engineers"].append("Alice")
grouped_data["engineers"].append("Bob")
print(f"Grouped Data: {dict(grouped_data)}")
# 3. namedtuple: Clean records
Point = namedtuple("Point", ["x", "y"])
p = Point(10, 20)
print(f"Point x: {p.x}, Point y: {p.y}")Vote Counts: Counter({'yes': 3, 'no': 2})
Most common: [('yes', 3)]
Grouped Data: {'engineers': ['Alice', 'Bob']}
Point x: 10, Point y: 20Implementação passo a passo
- Analisando arquivos de log para contar ocorrências de erros via Counter
- Construindo filas de prioridade ou agendadores de tarefas usando deque
- Representando dimensões de coordenadas ou registros de dados usando o NamedTuple
Perguntas frequentes
Por que o deque é mais rápido que a lista para operações de fila?
Uma lista requer o deslocamento de todos os elementos subsequentes na memória ao inserir ou excluir pela frente (O(N)). Um deque é implementado como uma lista duplamente vinculada, permitindo operações O(1) em ambas as extremidades.
Posso alterar elementos de um nomeadotuple?
Não. Como as tuplas nomeadas herdam das tuplas padrão, elas são totalmente imutáveis. Você deve usar o método ._replace() para retornar uma nova instância modificada.
Tópicos Relacionados
Aprenda tudo sobre listas Python. Descubra como criar, fatiar, modificar e iterar nativamente arrays em Python.
Dicionários PythonDicionários Master Python. Aprenda a armazenar, buscar e manipular dados de pares de valores-chave. Entenda o desempenho e as práticas recomendadas para mapeamentos.
Python ItertoolsAprenda o módulo itertools do Python. Domine iteradores infinitos, combinações, permutações, agrupamentos e processamento de dados com uso eficiente de memória.
Recursos Python recomendados
Expanda seu conhecimento com tutoriais interativos relacionados, folhas de dicas e comparações de código.
Como classificar uma lista em Python
Aprenda como classificar uma lista em Python usando o método sort() e a função sorted(). Descubra exemplos de classificação de chaves personalizadas e ordem reversa.
Folha de dicas dos métodos de string Python
Um guia de referência completo para manipulação de strings em Python. Domine a formatação, pesquisa, divisão, substituição e verificação de propriedades de string.
Python vs JavaScript: qual linguagem de programação é a melhor?
Uma comparação abrangente entre Python e JavaScript. Explore diferenças de sintaxe, desempenho, casos de uso (backend versus frontend) e exemplos de codificação.