Usando `collections.Counter` para Contar Itens em Uma Linha
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.