Contagem de Frequência em Python: Identificando Itens Repetidos sem Complicação
Contagem de Frequência em Python: Identificando Itens Repetidos sem Complicação
Contar a frequência de elementos e identificar o valor mais recorrente é uma tarefa indispensável na análise de dados, processamento de logs e criação de algoritmos de recomendação. Este script utiliza o módulo nativo
collections.Counter para mapear a ocorrência de cada item em tempo linear e extrair o elemento dominante instantaneamente através do método .most_common(1). A solução resolve o problema de ter que iterar manualmente e ordenar estruturas de dados complexas.Python
from collections import Counter
from typing import Any, Tuple
def obter_elemento_mais_frequente(lista: list) -> Tuple[Any, int]:
"""Retorna o elemento mais frequente de uma lista e a sua contagem de ocorrências."""
if not lista:
raise ValueError("A lista fornecida está vazia.")
# O Counter gera um dicionário contendo {elemento: contagem}
contador = Counter(lista)
# .most_common(1) retorna uma lista com uma tupla: [(elemento, quantidade)]
elemento_mais_comum, frequencia = contador.most_common(1)[0]
return elemento_mais_comum, frequencia
# --- Exemplo de uso prático ---
if __name__ == "__main__":
# Exemplo com lista de strings (ex: respostas de pesquisa ou categorias de produtos)
linguagens = ["Python", "Java", "Python", "JavaScript", "Python", "C#", "Java"]
item, qtd = obter_elemento_mais_frequente(linguagens)
print(f"Item mais frequente: '{item}' (Aparece {qtd} vezes)")
# Exemplo com lista de números inteiros (ex: IDs de logs)
logs_erros = [404, 500, 404, 200, 404, 500, 403, 200, 404]
erro_comum, frequencia_erro = obter_elemento_mais_frequente(logs_erros)
print(f"Código de erro mais comum: {erro_comum} (Ocorrências: {frequencia_erro})")
Pontos-chave
- Desempenho com O(n): O
collections.Countermapeia todos os itens da lista realizando apenas uma passagem (single-pass), sendo imensamente mais performático do que utilizar o métodolista.count(x)dentro de um laço ou da funçãomax(), que levaria a uma complexidade quadrática $O(n^2)$. - Retorno do
.most_common(n): O método aceita um parâmetro numérico $n$ para retornar os $n$ elementos mais populares. Ele retorna uma lista de tuplas no formato[(item, frequencia)], por isso o índice[0]é utilizado para extrair a primeira posição. - Desempate Aleatório: Caso haja empate na contagem máxima entre dois ou mais elementos, o
Counterretornará aquele que apareceu primeiro durante a iteração da lista original. - Tipos Suportados: Os elementos da lista precisam ser passíveis de hash (hashable), como strings, inteiros, floats e tuplas. Listas ou dicionários aninhados dentro da lista principal causarão um erro do tipo
TypeError.

Comentários
Postar um comentário