Usando `collections.Counter` para Contar Itens em Uma Linha

Publicado:
Atualizado:
PorJeferson Peter
1 min de leitura
Python
Compartilhe este post:

Contar ocorrências é uma tarefa que aparece o tempo todo:
análise de logs, limpeza de dados, tabelas de frequência, validações.

Embora seja fácil fazer isso manualmente com dicionários, o Python oferece uma ferramenta melhor: collections.Counter.


A abordagem manual

Um padrão bastante comum é este:

items = ["apple", "banana", "apple", "orange", "banana", "apple"]

counts = {}
for item in items:
    counts[item] = counts.get(item, 0) + 1

Funciona, mas é verboso e esconde a real intenção: contar itens.


Contando com Counter

from collections import Counter

items = ["apple", "banana", "apple", "orange", "banana", "apple"]

counts = Counter(items)
print(counts)
# Counter({'apple': 3, 'banana': 2, 'orange': 1})

A intenção fica clara imediatamente, com menos código.


Acessando contagens com segurança

counts["apple"]
# 3

counts["pear"]
# 0

Chaves inexistentes retornam 0 em vez de gerar erro, o que costuma ser desejável.


Métodos úteis do Counter

counts.most_common(2)
# [('apple', 3), ('banana', 2)]

Isso facilita extrair informações sem lógica extra.


Um erro comum a evitar

O Counter é otimizado para contagem, não para transformações complexas.

# Não ideal
Counter(x.lower().strip() for x in data if x)

Se o pré-processamento for mais complexo, limpe os dados antes de contar.


Conclusão

No código do dia a dia, o Counter melhora clareza e intenção.

Sempre que você estiver incrementando valores em um dicionário manualmente, vale considerar o uso de collections.Counter.

Compartilhe este post:
Usando `collections.Counter` para Contar Itens em Uma Linha | CodeCraftPython