Como contar elementos com Python Counter
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)
pythonNas seções a seguir, você vai aprender com alguns exemplos simples como usar o Python Counter
na prática.
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']
pythonA 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})
pythonPara 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))
pythonA saída resultante será:
Counter({'c': 5, 'a': 4, 'b': 4})
pythonPython 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))
pythonA saída será a mesma do exemplo anterior:
Counter({'c': 5, 'a': 4, 'b': 4})
pythonPython 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))
pythonA saída será novamente:
Counter({'c': 5, 'a': 4, 'b': 4})
pythonEm 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))
pythonAgora, 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})
pythonExpansõ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))
pythonNossa saída será:
Counter({'a': 1, 'z': 1, 'u': 1, 'l': 1})
pythonAgora, 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)
pythonIsso resulta na saída:
Counter({'a': 2, 'b': 1, 'l': 1, 'u': 1, 'c': 1, 'i': 1, 'n': 1, 'z': 1})
pythonAcessar 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
pythonfor letter in letters:
print(letter, letters[letter])
f 1
l 1
a 2
c 2
h 2
d 1
pythonAqui 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
pythonEste é um exemplo com .values()
:
for count in letters.values():
print(count)
1
1
2
2
2
1
pythonEste é 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
pythonExcluir 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))
pythonSua nova saída será:
Counter({'l': 1, 'a': 1, 'u': 1})
pythonDeterminar 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)
pythonA saída esperada será:
[('azul', 2)]
pythonTambé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)
pythonA saída correspondente será:
[('cinza', -1)]
pythonOperaçõ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)
pythonCounter({'a': 6, 'b': 3, 'c': 3})
pythonA 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)
pythonCounter({'a': 2, 'b': 1})
pythonComo 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)
pythonExcluir 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)
pythonA saída correspondente será:
Counter({'a': 6, 'c': 1})
pythonNosso 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.