A classe Python Counter é usada para contar elementos em um contêiner. Ela é uma subclasse de dict que, em combinação com diferentes métodos, tem várias aplicações possíveis.

O que é Python Counter?

O Python Counter é uma ferramenta útil que pode contar diferentes elementos em uma lista e mostrar a frequência com que esses elementos aparecem. Trata-se de uma subclasse do dicionário Python. Embora essa tarefa possa ser feita manualmente e de forma simples para uma pequena sequência de valores, torna-se muito mais complexa para conjuntos de dados extensos. O Python Counter é, por si só, uma estrutura que inicia com o valor “zero”. Um único Counter armazena a frequência de um objeto. Se você quiser considerar objetos diferentes, use um contador separado para cada um.

A classe Counter pode ser aplicada a listas, tuplas em Python, dicionários e strings em Python. A sintaxe do Counter é a seguinte:

Counter(list)
python

Nas seções a seguir, você vai aprender com alguns exemplos simples como usar o Python Counter na prática.

Hospedagem web com consultor pessoal

Rápido e escalável, confie na hospedagem da IONOS, que inclui domínio grátis no primeiro ano e endereço de e-mail!

  • Domínio
  • SSL Wildcard
  • Suporte 24 horas

Python Counter com lista

No primeiro exemplo, criamos uma lista simples com diferentes valores:

lista = ['a', 'a', 'b', 'a', 'c', 'b', 'b', 'c', 'a', 'c', 'b', 'c', 'c']
python

A lista possui três elementos diferentes: ‘a’, ‘b’ e ‘c’. Para descobrir a frequência de cada um desses elementos, aplicamos o Python Counter. A saída será:

Counter({'c': 5, 'a': 4, 'b': 4})
python

Para usar o Python Counter, primeiro é necessário importar a classe. O resultado é exibido com print. O código completo para este exemplo é:

from collections import Counter
lista = ['a', 'a', 'b', 'a', 'c', 'b', 'b', 'c', 'a', 'c', 'b', 'c', 'c']
counter_lista = Counter(lista)
print(Counter(lista))
python

A saída resultante será:

Counter({'c': 5, 'a': 4, 'b': 4})
python

Python Counter com tupla

No segundo exemplo, procedemos de forma muito semelhante. Desta vez, o Python Counter será aplicado a uma tupla. Tuplas são usadas em Python para armazenar múltiplos valores em uma variável. Como se trata de uma coleção ordenada de objetos, a ordem é levada em conta. Os objetos são colocados entre parênteses e separados por vírgulas. Assim, o código é da seguinte forma:

from collections import Counter
Tupel = ('a', 'a', 'b', 'a', 'c', 'b', 'b', 'c', 'a', 'c', 'b', 'c', 'c')
print(Counter(Tupel))
python

A saída será a mesma do exemplo anterior:

Counter({'c': 5, 'a': 4, 'b': 4})
python

Python Counter na classe Dictionary

Em um dicionário Python, os elementos são definidos como pares chave-valor e colocados entre chaves {}. Quando você aplica o Python Counter a um dicionário, ele considera as chaves como elementos e seus valores como contagens. As chaves do dicionário representam os elementos, enquanto os valores indicam suas quantidades no dicionário original. Para o nosso exemplo anterior, isso poderia ser assim:

from collections import Counter
Dictionary = {'a': 4, 'b': 4, 'c': 5}
counter_dictionary = Counter(Dictionary)
print(Counter(Dictionary))
python

A saída será novamente:

Counter({'c': 5, 'a': 4, 'b': 4})
python
Dica

Em apenas três etapas, com o Deploy Now da IONOS, você conecta seu repositório, executa a construção automaticamente e acessa uma infraestrutura confiável. Aproveite os planos adequados e uma consultoria especializada!

Python Counter em combinação com strings simples

Para ter uma ideia de como o Python Counter pode economizar tempo e facilitar o trabalho, aplique a classe a uma string. Uma string é uma sequência de caracteres delimitada por aspas. Espaços em branco também são considerados. Escolhemos a seguinte string para nosso exemplo:

from collections import Counter
string_exemplo = "Isso é um exemplo."
counter_string = Counter(string_exemplo)
print(Counter(string_exemplo))
python

Agora, cada caractere é contado individualmente como uma chave no Counter. A saída esperada será:

Counter({'i': 4, 'e': 3, 's': 3, ' ': 3, 't': 2, 'D': 1, 'n': 1, 'B': 1, 'j': 1, 'p': 1, 'l': 1, '.': 1})
python

Expansões de Python Counter com .update()

As funcionalidades oferecidas pelo Python Counter são diversas. Por exemplo, é possível expandir uma contagem existente. Para isso, você usa .update() para expandir a contagem de um Counter. Primeiro, criamos um código simples para ilustrar o conceito acima sem destacar a string:

from collections import Counter 
string = "azul" 
print(Counter(string))
python

Nossa saída será:

Counter({'a': 1, 'z': 1, 'u': 1, 'l': 1})
python

Agora, aplicamos .update() para modificar a contagem:

from collections import Counter
cores = Counter({'b': 1, 'l': 1, 'a': 1, 'u': 1})
cores.update("cinza")
print(cores)
python

Isso resulta na saída:

Counter({'a': 2, 'b': 1, 'l': 1, 'u': 1, 'c': 1, 'i': 1, 'n': 1, 'z': 1})
python

Acessar valores de Python Counter

Você pode acessar os valores de um Python Counter, pois essa classe funciona de forma semelhante a um dict. No exemplo de código a seguir, mostramos algumas variações e suas respectivas saídas. Aqui, letters representa as chaves (keys) e counts, os valores (values).

from collections import Counter
letters = Counter("flachdach")
print(letters["a"])
2
print(letters["h"])
2
python
for letter in letters:
    print(letter, letters[letter])
f 1
l 1
a 2
c 2
h 2
d 1
python

Aqui está um exemplo com o método .keys():

for letter in letters.keys():
    print(letter, letters[letter])
 
f 1
l 1
a 2
c 2
h 2
d 1
python

Este é um exemplo com .values():

for count in letters.values():
    print(count)
 
1
1
2
2
2
1
python

Este é o método .items():

for letter, count in letters.items():
    print(letter, count)
 
f 1
l 1
a 2
c 2
h 2
d 1
python

Excluir elementos da Python Counter

Se você deseja excluir um elemento do Python Counter, del é a escolha certa:

from collections import Counter
exemplo = {'b': 1, 'l': 1, 'a': 1, 'u': 1}
del exemplo["b"]
print(Counter(exemplo))
python

Sua nova saída será:

Counter({'l': 1, 'a': 1, 'u': 1})
python

Determinar a maior ocorrência com most_common(n)

Com most_common(n) para Python Counter, você pode identificar os elementos mais frequentes. Para isso, consideremos um exemplo em que um produto está disponível em várias cores. Além das cores, o número de itens disponíveis em estoque também é indicado. Um valor negativo indica que a variante não está mais disponível em estoque, mas foi pré-encomendada. Se quisermos verificar qual variante tem a maior quantidade de itens, usamos o seguinte código:

from collections import Counter
 estoque = Counter({'azul': 2, 'cinza': -1, 'preto': 0})
mais_vendido = estoque.most_common(1)
print(mais_vendido)
python

A saída esperada será:

[('azul', 2)]
python

Também podemos exibir a menor quantidade de itens. Para isso, modificamos o código da seguinte forma:

from collections import Counter
estoque = Counter({'azul': 2, 'cinza': -1, 'preto': 0})
menos_vendido = estoque.most_common()[:-2:-1]
print(menos_vendido)
python

A saída correspondente será:

[('cinza', -1)]
python

Operações aritméticas com Python Counter

O Python Counter também permite operações aritméticas. No entanto, é importante observar que apenas valores positivos são exibidos. No código a seguir, testamos algumas operações matemáticas.

Uma simples adição:

from collections import Counter
x = Counter(a=4, b=2, c=1)
y = Counter(a=2, b=1, c=2)
z = x + y
print(z)
python
Counter({'a': 6, 'b': 3, 'c': 3})
python

A subtração:

from collections import Counter
x = Counter(a=4, b=2, c=1)
y = Counter(a=2, b=1, c=2)
z = x - y
print(z)
python
Counter({'a': 2, 'b': 1})
python

Como o valor de c agora seria negativo, ele não é exibido.

Ordenar tipos de dados por frequência com Python Counter

Outra funcionalidade que a classe oferece é a contagem das extensões de arquivos em uma pasta. Por exemplo, uma pasta chamada “Imagens” que contém vários arquivos diferentes com vários tipos de dados. Para listar, usamos o seguinte código:

import pathlib
from collections import Counter
caminho_da_pasta = pathlib.Path("Imagens/")
extensoes = [entry.suffix for entry in caminho_da_pasta.iterdir() if entry.is_file()]
contador_de_extensoes = Counter(extensoes)
print(contador_de_extensoes)
python

Excluir valores negativos e nulos com Python Counter

Para remover valores nulos ou negativos com Python Counter, use o seguinte código:

from collections import Counter
valores = Counter(a=6, b=0, c=1, d=-4)
valores = +valores
print(valores)
python

A saída correspondente será:

Counter({'a': 6, 'c': 1})
python
Dica

Nosso Digital Guide tem muitos outros artigos sobre a linguagem de programação Python. Neste explicamos quais operadores Python existem, guiamos você pela instalação do Python e ensinamos a usar Python.

Este artigo foi útil?
Ir para o menu principal