Python Számláló a gyűjteményekben példával

⚡ Okos összefoglaló

Python A Counter egy szótár alosztály a collections modulból, amely összegzi az egyes elemek előfordulási gyakoriságát egy iterálható objektumban. Elfogad sztringeket, listákat, tuple-ket és szótárakat, majd támogatja az aritmetikai, a most_common és az update műveleteket a gyors számlálási feladatokhoz.

  • 🔢 Számolás: A számláló összeszámolja az egyes elemek előfordulásait, és kulcs-számláló párokként adja vissza azokat.
  • 📥 Bármely iterálható: Bemenetként sztringeket, listákat, tuple-ket és szótárakat fogad el.
  • Számtan: A számlálók támogatják az összeadást és a részfeladatottracció, metszet és egyesítési műveletek.
  • ???? leggyakoribb(): Ez a metódus rangsorolt ​​sorrendben adja vissza a leggyakoribb elemeket.
  • 🔄 Frissítés: frissítés() és subtract() egy másik számláló vagy iterálható függvény számlálóinak módosítása.
  • 🤖 MI segítség: A mesterséges intelligencia asszisztensek számlálókódot generálnak, és azt javasolják a gyakorisági és szószámlálási feladatokhoz.

Python Számláló a gyűjteményekben

Mi a Python Ellen?

Python A számláló egy olyan tároló, amely tartalmazza a tárolóban lévő egyes elemek számát. A számláló a szótárosztályon belül elérhető alosztály.

A számláló a szótárosztályon belül elérhető alosztály. A Python A számláló eszközzel megszámolhatja a kulcs-érték párokat egy objektumban, amelyet hash tábla objektumnak is neveznek.

Miért érdemes Python Ellen?

Itt vannak a használat fő okai Python 3 Számláló:

  • A számláló az adatokat egy rendezetlen gyűjteményben tárolja, akárcsak a hashtable objektumokat. Az itt található elemek a kulcsokat és a számértéket jelentik.
  • Lehetővé teszi az iterálható lista tételeinek megszámlálását.
  • Számtani műveletek, mint az összeadás, a részfelosztástracA ció, metszés és egyesítés könnyen elvégezhető egy számlálón.
  • Egy számláló egy másik számláló elemeit is meg tudja számolni

Bevezetés a Python Számláló

Python A Counter bemenetként egy listát, sorszámot, szótárt, karakterláncot vesz be, amelyek mindegyike iterálható objektum, és olyan kimenetet ad, amely tartalmazza az egyes elemek számát.

Syntax:

Counter(list)

Vegye figyelembe, hogy a következő listával rendelkezik:

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

A listának x, y és z elemei vannak. Ha a Counter-t használja ezen a listán, akkor megszámolja, hogy x, y és z hányszor van jelen. Ha a számlálót a list1-en használják, a kimenetnek valami ilyesminek kell lennie:

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

Tehát x számlálója 4, y 2 és z 2.

A Counter használatához először importálnunk kell az alábbi példában látható módon:

from collections import Counter

Íme egy egyszerű példa, amely bemutatja a Counter modul működését.

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

output:

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

Számláló húrral

In Python, minden objektum és a karakterlánc is objektum. Python húr egyszerűen létrehozható úgy, hogy a karaktereket dupla idézőjelbe zárja. Python nem támogatja a karaktertípust. Ezeket 1 hosszúságú karakterláncokként kezeli, és részkarakterláncnak is tekinti.

Az alábbi példában egy karakterláncot adunk át a Számlálónak. Szótárformátumot ad vissza kulcs/érték párral, ahol a kulcs az elem, az érték pedig a szám. A teret is elemnek tekinti, és megadja a karakterláncban lévő szóközök számát.

Példa:

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

output:

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

Számláló listával

A lista egy iterálható objektum, amelynek elemei szögletes zárójelben vannak.

A lista elemei, amikor megadják a számlálónak, hashable objektummá lesznek konvertálva, ahol az elemek kulcsok lesznek, az értékek pedig a megadott lista elemeinek száma.

Például ['x', 'y', 'z', 'x', 'x', 'x', 'y', 'z']. Ha megadja a listának a számlálót, akkor a lista minden elemének számát megadja.

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

output:

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

Számláló szótárral

A szótár elemei kulcs/érték párok, és zárójelek közé vannak írva.

Miután a szótárt a számlálónak adtuk, a rendszer egy hashable objektummá alakítja, ahol az elemek kulcsokká válnak, az értékek pedig a megadott szótár elemeinek száma.

Például: {'x': 4, 'y': 2, 'z': 2, 'z': 2}. A Számláló funkció megpróbálja megkeresni az egyes kulcsok számát az adott szótárban.

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

output:

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

Számláló Tuple-vel

A Tuple kerek zárójelben vesszővel elválasztott objektumok gyűjteménye. A Counter megadja a megadott sor egyes elemeinek számát.

Miután a leíró megadásra kerül a számlálónak, egy hashtable objektummá alakul, ahol az elemek kulcsokká lesznek, az értékek pedig a megadott leíró elemeinek száma.

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

output:

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

Számlálók elérése, inicializálása és frissítése

Számláló inicializálása

A számláló inicializálható karakterlánc érték, lista, szótár vagy sor átadásával az alábbiak szerint:

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

Egy üres számlálót is inicializálhat az alábbiak szerint:

from collections import Counter
_count = Counter()

Számláló frissítése

A számlálóhoz értékeket adhat hozzá az update() metódussal.

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

A végső kód a következő:

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

A kimenet:

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

Hozzáférés a számlálóhoz

Az értékek számlálóból való lekéréséhez a következőket teheti:

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

output:

u : 3

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

Elem törlése a számlálóból

Ha törölni szeretne egy elemet a számlálóból, használja a del -et, az alábbi példában látható módon:

Példa:

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

output:

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

Aritmetikai művelet bekapcsolva Python Számláló

Számtani műveletek, mint például összeadás, részfelosztástracA ció, metszés és egyesítés elvégezhető egy számlálón, ahogy az az alábbi példában látható:

Példa:

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)

output:

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

Elérhető módszerek a Python Számláló

A Counter segítségével elérhető néhány fontos módszer, ezek listája itt található:

  • elemek() : Ez a módszer visszaadja az összes olyan elemet, amelynek száma >0. A 0 vagy -1 értékű elemeket nem adjuk vissza.
  • most_common(érték): Ez a módszer visszaadja a leggyakoribb elemeket a Számláló listából.
  • alatttract(): Ezzel a módszerrel levonják az elemeket egy másik számlálóból.
  • frissítés(): Ez a módszer egy másik számláló elemeinek frissítésére szolgál.

Példa: elements()

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)

output:

x
x
x
x
x
y
y

Példa: most_common(érték)

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)

output:

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

Példa: alponttract()

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)

output:

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

Példa: 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)

output:

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

Számlák újra hozzárendelése Python

Újra hozzárendelheti a számlálók számát az alábbiak szerint:

Tegyük fel, hogy van egy szótárad: {'x': 5, 'y': 12, 'z': -2, 'x1':0}

Módosíthatja az elemek számát az alábbiak szerint:

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

counter1['y'] = 20

print(counter1)

output: A végrehajtás után látni fogja, hogy az y szám 12-ről 20-ra módosult

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

Szerezze meg és állítsa be az elemek számát a Counter segítségével

Egy elem számának kiszámításához a Counter segítségével a következőket teheti:

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'

output:

12

Az elemek számának beállításához a következőket teheti:

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)

output:

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

GYIK

A Counter egy szótár alosztály, amely automatikusan számolja a hashable elemeket, és 0-t ad vissza hiányzó kulcsok esetén a KeyError hiba generálása helyett. Egy sima szótár manuális számlálási logikát igényel, és KeyError hibát generál hiányzó kulcsok esetén.

A most_common(n) függvény az n legnagyobb elemszámú elemet adja vissza (element, count) tuple-ként, a leggyakoribbtól a legkevésbé gyakoriig rendezve. Argumentum nélküli hívás esetén az összes elemet visszaadja darabszám szerint rendezve.

alatttracA t() függvény a levonás után megőrzi a nulla és negatív számokat, és a számlálót helyére módosítja. A mínusz operátor egy új számlálót ad vissza, és elveti azokat az elemeket, amelyek eredménye nulla vagy negatív.

Igen. Először a szöveget bontsd fel, például a Counter(mondat.split()) paranccsal, hogy egész szavakat számolj. Egy nyers karakterlánc átadása az egyes karaktereket számolja, beleértve a szóközöket is, a szavak helyett.

Használd a sum(counter.values()) függvényt az összes számláló összeadásához, vagy a Counter.total() függvényt a Python 3.10-es és újabb verziók. Ez megadja a számláló által összesített elemek számát.

A számláló felülírja a __missing__ értéket, így minden hiányzó elem 0-ás számot jelez. Ez lehetővé teszi az új kulcsok és lekérdezési elemek biztonságos növelését anélkül, hogy először ellenőriznénk, hogy léteznek-e.

A mesterséges intelligencia asszisztensek számlálókódot generálnak a gyakoriságelemzéshez, a manuális ciklusok helyett a számlálót javasolják, és olyan metódusokat magyaráznak el, mint a most_common és az elements. Emellett a számlálási logikát tisztább, gyorsabb, gyűjteményalapú kóddá alakítják.

Igen. A GitHub Copilot automatikusan kiegészíti a Counter, defaultdict és OrderedDict mintákat a célodat leíró megjegyzésből. Az Agentic AI eszközei a manuális számlálási ciklusokat Counter hívásokra alakítják át, és teszteket adnak hozzá egy fájlhoz.

Foglald össze ezt a bejegyzést a következőképpen: