Python Brojač u zbirkama s primjerom

Što je Python Brojač?

Python Brojač je spremnik koji će sadržavati brojanje svakog od elemenata prisutnih u spremniku. Brojač je potklasa dostupna unutar klase rječnika.

Brojač je potklasa dostupna unutar klase rječnika. Korištenje Python Alat za brojanje, možete prebrojati parove ključ-vrijednost u objektu, koji se naziva i objekt hash tablice.

Zašto koristiti Python Brojač?

Ovdje su glavni razlozi za korištenje Python 3 Brojač:

  • Brojač drži podatke u neuređenoj zbirci, baš kao objekti hashtable. Elementi ovdje predstavljaju ključeve i broj kao vrijednosti.
  • Omogućuje vam brojanje stavki na popisu koji se može ponavljati.
  • Aritmetičke operacije poput zbrajanja, oduzimanja, sjecišta i unije mogu se jednostavno izvesti na brojaču.
  • Brojač također može brojati elemente iz drugog brojača

Uvod u Python Counter

Python Brojač uzima u ulaz popis, tuple, rječnik, string, koji su svi objekti koji se mogu ponavljati, i dat će vam izlaz koji će imati broj svakog elementa.

Sintaksa:

Counter(list)

Uzmite u obzir da imate sljedeći popis:

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

Popis ima elemente x, y i z. Kada koristite brojač na ovom popisu, on će brojati koliko su puta prisutni x, y i z. Izlaz ako se brojač koristi na popisu1 trebao bi biti nešto poput:

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

Dakle, imamo broj x kao 4, y kao 2 i z kao 2.

Da bismo koristili Counter, moramo ga prvo uvesti kao što je prikazano u donjem primjeru:

from collections import Counter

Evo jednostavnog primjera koji pokazuje rad modula brojača.

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

Izlaz:

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

Brojač s nizom

In Python, sve je objekt i niz je također objekt. Python niz može se stvoriti jednostavnim stavljanjem znakova u dvostruke navodnike. Python ne podržava vrstu znakova. Oni se tretiraju kao nizovi duljine jedan, također se smatraju podnizovima.

U donjem primjeru, niz se prosljeđuje brojaču. Vraća format rječnika, s parom ključ/vrijednost gdje je ključ element, a vrijednost broj. Također razmatra prostor kao element i daje broj razmaka u nizu.

Primjer:

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

Izlaz:

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})

Brojač s listom

Popis je objekt koji se može ponavljati i koji ima svoje elemente unutar uglatih zagrada.

Elementi na popisu kada se daju brojaču bit će pretvoreni u objekte hashtable u kojima će elementi postati ključevi, a vrijednosti će biti broj elemenata s danog popisa.

Na primjer ['x','y','z','x','x','x','y','z']. Nakon što popisu date Brojač, on će vam dati broj svakog elementa na popisu.

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

Izlaz:

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

Brojač s rječnikom

Rječnik ima elemente kao par ključ/vrijednost, a napisani su unutar vitičastih zagrada.

Jednom kada je rječnik dan brojaču, bit će pretvoren u objekte hashtable u kojima će elementi postati ključevi, a vrijednosti će biti broj elemenata iz danog rječnika.

Na primjer: {'x': 4, 'y': 2, 'z': 2, 'z': 2}. Funkcija brojača pokušat će pronaći broj svakog ključa u danom rječniku.

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

Izlaz:

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

Brojač s Tupleom

Tuple je zbirka objekata odvojenih zarezima unutar okruglih zagrada. Brojač će vam dati broj svakog elementa u zadanoj torki.

Nakon što se tuple preda brojaču, bit će pretvoren u objekt hashtable u kojem će elementi postati ključevi, a vrijednosti će biti broj elemenata iz dane tuple.

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

Izlaz:

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

Pristup, inicijalizacija i ažuriranje brojača

Inicijaliziranje brojača

Brojač se može inicijalizirati prosljeđivanjem vrijednosti niza, popisa, rječnika ili torke kao što je prikazano u nastavku:

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

Također možete inicijalizirati prazan brojač kao što je prikazano u nastavku:

from collections import Counter
_count = Counter()

Ažuriranje brojača

Brojaču možete dodati vrijednosti pomoću metode update().

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

Konačni kod je:

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

Izlaz je:

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})

Pristup šalteru

Da biste dobili vrijednosti iz brojača, možete učiniti sljedeće:

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]))

Izlaz:

u : 3

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

Brisanje elementa iz brojača

Za brisanje elementa iz brojača možete upotrijebiti del, kao što je prikazano u primjeru ispod:

Primjer:

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

Izlaz:

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

Aritmetička operacija uključena Python Counter

Aritmetičke operacije poput zbrajanja, oduzimanja, presjeka i unije mogu se izvesti na brojaču kao što je prikazano u primjeru ispod:

Primjer:

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)

Izlaz:

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

Metode dostupne na Python Counter

Postoje neke važne metode dostupne uz Counter, evo popisa istih:

  • elementi() : Ova metoda će vam vratiti sve elemente s brojem >0. Elementi s brojem 0 ili -1 neće se vratiti.
  • najčešće_uobičajeno(vrijednost): Ova metoda će vam vratiti najčešće elemente s popisa brojača.
  • oduzeti(): Ova se metoda koristi za oduzimanje elemenata iz drugog brojača.
  • Ažuriraj(): Ova se metoda koristi za ažuriranje elemenata iz drugog brojača.

Primjer: elementi()

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)

Izlaz:

x
x
x
x
x
y
y

Primjer: most_common(vrijednost)

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)

Izlaz:

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

Primjer: subtract()

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)

Izlaz:

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

Primjer: update()

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)

Izlaz:

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

Preraspodjela se ubraja u Python

Brojeve brojača možete ponovno dodijeliti kao što je prikazano u nastavku:

Zamislite da imate rječnik kao: {'x': 5, 'y': 12, 'z': -2, 'x1':0}

Možete promijeniti broj elementa kao što je prikazano u nastavku:

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

counter1['y'] = 20

print(counter1)

Izlaz: Nakon izvođenja vidjet ćete da se y brojač promijenio s 12 na 20

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

Dobijte i postavite broj elemenata pomoću brojača

Da biste dobili broj elementa koristeći Counter, možete učiniti sljedeće:

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'

Izlaz:

12

Za postavljanje broja elementa možete učiniti sljedeće:

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)

Izlaz:

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

rezime

  • Brojač je spremnik koji će sadržavati brojanje svakog od elemenata prisutnih u spremniku.
  • Brojač je potklasa dostupna unutar klase rječnika.
  • Korištenje Python Alat za brojanje, možete prebrojati parove ključ-vrijednost u objektu, koji se također naziva objekt hashtable.
  • Brojač drži podatke u neuređenoj zbirci, baš kao objekti hashtable. Elementi ovdje predstavljaju ključeve i broj kao vrijednosti.
  • Omogućuje vam brojanje stavki na popisu koji se može ponavljati.
  • Aritmetičke operacije poput zbrajanja, oduzimanja, sjecišta i unije mogu se jednostavno izvesti na brojaču.
  • Brojač također može brojati elemente iz drugog brojača.
  • Važne metode dostupne na brojaču su elements(), most_common(value), subtract() i update().
  • Brojač se može koristiti na nizu, listi, rječniku i torci.