Python Contador em coleções com exemplo

O que é o Python Contador?

Python Contador é um contêiner que conterá a contagem de cada um dos elementos presentes no contêiner. O contador é uma subclasse disponível dentro da classe do dicionário.

O contador é uma subclasse disponível dentro da classe do dicionário. Usando o Python Com a ferramenta Contador, você pode contar os pares de valores-chave em um objeto, também chamado de objeto de tabela hash.

Por que usar Python Contador?

Aqui estão as principais razões para usar Python 3 Contador:

  • O contador mantém os dados em uma coleção não ordenada, assim como os objetos hashtable. Os elementos aqui representam as chaves e a contagem como valores.
  • Ele permite contar os itens em uma lista iterável.
  • Operações aritméticas como adição, subtração, interseção e união podem ser facilmente realizadas em um contador.
  • Um contador também pode contar elementos de outro contador

Introduction to Python Contador

Python Counter recebe como entrada uma lista, tupla, dicionário, string, que são todos objetos iteráveis, e fornecerá uma saída que terá a contagem de cada elemento.

Sintaxe:

Counter(list)

Considere que você tem a seguinte lista:

list1 = ['x','y','z','x','x','x','y', 'z']

A lista possui os elementos x , y e z. Quando você usa Counter nesta lista, ele contará quantas vezes x , y e z estão presentes. A saída se o contador for usado na lista1 deve ser algo como:

Counter({'x': 4, 'y': 2, 'z': 2})

Portanto, temos a contagem de x como 4, y como 2 e z como 2.

Para fazer uso do Counter, precisamos importá-lo primeiro, conforme mostrado no exemplo abaixo:

from collections import Counter

Aqui está um exemplo simples, que mostra o funcionamento do módulo Counter.

from collections import Counter
list1 = ['x','y','z','x','x','x','y', 'z']
print(Counter(list1))

Saída:

Counter({'x': 4, 'y': 2, 'z': 2})

Contador com String

In Python, tudo é um objeto e string também é um objeto. Python corda pode ser criado simplesmente colocando caracteres entre aspas duplas. Python não suporta um tipo de caractere. Elas são tratadas como strings de comprimento um, também consideradas como uma substring.

No exemplo abaixo, uma string é passada para Counter. Retorna formato de dicionário, com par chave/valor onde a chave é o elemento e o valor é a contagem. Também considera o espaço como um elemento e fornece a contagem de espaços na string.

Exemplo:

from collections import Counter
my_str = "Welcome to Guru99 Tutorials!"
print(Counter(my_str))

Saída:

Counter({'o': 3, ' ': 3, 'u': 3, 'e': 2, 'l': 2, 't': 2, 'r': 2, '9': 2, 'W': 1,
 'c': 1, 'm': 1, 'G': 1, 'T': 1, 'i': 1, 'a': 1, 's': 1, '!': 1})

Contador com lista

Uma lista é um objeto iterável que possui seus elementos entre colchetes.

Os elementos da lista quando fornecidos ao Contador serão convertidos em objetos hashtable onde os elementos se tornarão chaves e os valores serão a contagem dos elementos da lista fornecida.

Por exemplo ['x','y','z','x','x','x','y','z']. Depois de fornecer o contador à lista, ele fornecerá a contagem de cada elemento da lista.

from collections import Counter
list1 = ['x','y','z','x','x','x','y','z']
print(Counter(list1))

Saída:

Counter({'x': 4, 'y': 2, 'z': 2})

Contador com Dicionário

Um dicionário possui elementos como par chave/valor e eles são escritos entre colchetes.

Assim que o dicionário for fornecido ao Contador, ele será convertido em objetos hashtable onde os elementos se tornarão chaves e os valores serão a contagem dos elementos do dicionário fornecido.

Por exemplo: {'x': 4, 'y': 2, 'z': 2, 'z': 2}. A função Counter tentará encontrar a contagem de cada chave no dicionário fornecido.

from collections import Counter
dict1 =  {'x': 4, 'y': 2, 'z': 2, 'z': 2}
print(Counter(dict1))

Saída:

Counter({'x': 4, 'y': 2, 'z': 2})

Contador com Tupla

Tupla é uma coleção de objetos separados por vírgulas entre colchetes. Counter fornecerá a contagem de cada um dos elementos da tupla fornecida.

Assim que a tupla for fornecida ao contador, ela será convertida em um objeto hashtable onde os elementos se tornarão chaves e os valores serão a contagem dos elementos da tupla fornecida.

from collections import Counter
tuple1 = ('x','y','z','x','x','x','y','z')
print(Counter(tuple1))

Saída:

Counter({'x': 4, 'y': 2, 'z': 2})

Acessando, Inicializando e Atualizando Contadores

Inicializando contador

Um contador pode ser inicializado passando um valor de string, lista, dicionário ou tupla conforme mostrado abaixo:

from collections import Counter
print(Counter("Welcome to Guru99 Tutorials!"))   #using string
print(Counter(['x','y','z','x','x','x','y', 'z'])) #using list
print(Counter({'x': 4, 'y': 2, 'z': 2})) #using dictionary
print(Counter(('x','y','z','x','x','x','y', 'z'))) #using tuple

Você também pode inicializar um contador vazio conforme mostrado abaixo:

from collections import Counter
_count = Counter()

Atualizando contador

Você pode adicionar valores ao contador usando o método update().

_count.update('Welcome to Guru99 Tutorials!')

O código final é:

from collections import Counter
_count = Counter()
_count.update('Welcome to Guru99 Tutorials!')
print(_count)

A saída é:

Counter({'o': 3, ' ': 3, 'u': 3, 'e': 2, 'l': 2, 't': 2, 'r': 2, '9': 2, 'W': 1,
 'c': 1, 'm': 1, 'G': 1, 'T': 1, 'i': 1, 'a': 1, 's': 1, '!': 1})

Acessando o contador

Para obter os valores do contador, você pode fazer o seguinte:

from collections import Counter

_count = Counter()
_count.update('Welcome to Guru99 Tutorials!')
print('%s : %d' % ('u', _count['u']))
print('\n')
for char in 'Guru':
    print('%s : %d' % (char, _count[char]))

Saída:

u : 3

G : 1
u : 3
r : 2
u : 3

Excluindo um elemento do contador

Para excluir um elemento do Counter você pode usar del , conforme mostrado no exemplo abaixo:

Exemplo:

from collections import Counter
dict1 =  {'x': 4, 'y': 2, 'z': 2}
del dict1["x"]
print(Counter(dict1))

Saída:

Counter({'y': 2, 'z': 2})

Operação aritmética em Python Contador

Operações aritméticas como adição, subtração, intersecção e união podem ser feitas em um Contador conforme mostrado no exemplo abaixo:

Exemplo:

from collections import Counter
counter1 =  Counter({'x': 4, 'y': 2, 'z': -2})

counter2 = Counter({'x1': -12, 'y': 5, 'z':4 })

#Addition
counter3 = counter1 + counter2 # only the values that are positive will be returned.

print(counter3)

#Subtraction
counter4 = counter1 - counter2 # all -ve numbers are excluded.For example z will be z = -2-4=-6, since it is -ve value it is not shown in the output

print(counter4)

#Intersection
counter5 = counter1 & counter2 # it will give all common positive minimum values from counter1 and counter2

print(counter5)

#Union
counter6 = counter1 | counter2 # it will give positive max values from counter1 and counter2

print(counter6)

Saída:

Counter({'y': 7, 'x': 4, 'z': 2})
Counter({'x1': 12, 'x': 4})
Counter({'y': 2})
Counter({'y': 5, 'x': 4, 'z': 4})

Métodos disponíveis em Python Contador

Existem alguns métodos importantes disponíveis com Counter, aqui está a lista dos mesmos:

  • elementos() : Este método retornará todos os elementos com contagem> 0. Elementos com contagem 0 ou -1 não serão retornados.
  • most_common(valor): Este método retornará os elementos mais comuns da lista de contadores.
  • subtrair(): Este método é usado para deduzir os elementos de outro contador.
  • atualizar(): Este método é usado para atualizar os elementos de outro contador.

Exemplo: elementos()

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 2, 'z': -2, 'x1':0})

_elements = counter1.elements() # will give you all elements with positive value and count>0
for a in _elements:
    print(a)

Saída:

x
x
x
x
x
y
y

Exemplo: most_common(valor)

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})

common_element = counter1.most_common(2) # The dictionary will be sorted as per the most common element first followed by next.
print(common_element)

common_element1 = counter1.most_common() # if the value is not given to most_common , it will sort the dictionary and give the most common elements from the start.The last element will be the least common element.
print(common_element1)

Saída:

 [('y', 12), ('x', 5)]
[('y', 12), ('x', 5), ('x1', 0), ('z', -2)]

Exemplo: subtrair()

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})
counter2 = Counter({'x': 2, 'y':5})

counter1.subtract(counter2)
print(counter1)

Saída:

Counter({'y': 7, 'x': 3, 'x1': 0, 'z': -2})

Exemplo: atualização()

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})
counter2 = Counter({'x': 2, 'y':5})
counter1.update(counter2)
print(counter1)

Saída:

Counter({'y': 17, 'x': 7, 'x1': 0, 'z': -2})

Reatribuindo contagens em Python

Você pode reatribuir contagens de contador conforme mostrado abaixo:

Considere que você tem um dicionário como: {'x': 5, 'y': 12, 'z': -2, 'x1':0}

Você pode alterar a contagem do elemento conforme mostrado abaixo:

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})

counter1['y'] = 20

print(counter1)

Saída: Após a execução, você verá que a contagem de y mudou de 12 para 20

Counter({'y': 20, 'x': 5, 'x1': 0, 'z': -2})

Obtenha e defina a contagem de elementos usando Counter

Para obter a contagem de um elemento usando Counter você pode fazer o seguinte:

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})
print(counter1['y']) # this will give you the count of element 'y'

Saída:

12

Para definir a contagem do elemento você pode fazer o seguinte:

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})

print(counter1['y'])

counter1['y'] = 20
counter1['y1'] = 10

print(counter1)

Saída:

12
Counter({'y': 20, 'y1': 10, 'x': 5, 'x1': 0, 'z': -2})

Resumo

  • Contador é um contêiner que conterá a contagem de cada um dos elementos presentes no contêiner.
  • Counter é uma subclasse disponível dentro da classe do dicionário.
  • Com o Python Com a ferramenta Contador, você pode contar os pares de valores-chave em um objeto, também chamado de objeto hashtable.
  • O contador mantém os dados em uma coleção não ordenada, assim como os objetos hashtable. Os elementos aqui representam as chaves e a contagem como valores.
  • Ele permite contar os itens em uma lista iterável.
  • Operações aritméticas como adição, subtração, interseção e união podem ser facilmente realizadas em um contador.
  • Um contador também pode contar elementos de outro contador.
  • Os métodos importantes disponíveis em um contador são elements() , most_common(value), subtract() e update().
  • Um contador pode ser usado em uma string, lista, dicionário e tupla.