A Python számláló használata a Gyűjtemények modulból

Ebből az oktatóanyagból megtudhatja, hogyan kell használni a Python gyűjtőmoduljából származó számlálóobjektumot.

Ha hosszú sorozatokkal dolgozik Pythonban, például Python-listákkal vagy karakterláncokkal, előfordulhat, hogy el kell tárolnia a sorozatban megjelenő elemeket és azok megjelenési számát.

A Python szótár megfelelő beépített adatstruktúra az ilyen alkalmazásokhoz. A Python Counter osztálya azonban a gyűjtemények modulból leegyszerűsítheti ezt – egy számláló létrehozásával –, amely egy szótár az elemekről és azok számáról a sorozatban.

A következő néhány percben a következőket tanulja meg:

  • Használja a Python számlálóobjektumát
  • Hozzon létre egy Python-szótárt az elemek számértékeinek iterálható formában történő tárolásához
  • Írja át a szótárt Python-számlálóval, egyszerűsített szintaxissal
  • Olyan műveletek végrehajtása, mint az elemek frissítése és kivonása, metszéspont keresése két számlálóobjektum között
  • Szerezze be a számláló leggyakrabban előforduló tételeit a most_common() metódussal

Kezdjük el!

Python Collections modul és számlálóosztály

Gyakran használ egy Python szótárt az elemek és azok számának iterálható formában történő tárolására. Az elemek és a szám kulcsként, illetve értékként tárolódnak.

Mivel a Counter osztály a Python beépített gyűjteménymoduljának része, így importálhatja a Python-szkriptbe:

from collections import Counter

A Counter osztály importálása után az ábrán látható módon létrehozhat egy számláló objektumot:

<counter_object> = Counter(iterable)

Itt:

  • iterable bármely érvényes Python iterálható, például Python-lista, karakterlánc vagy sor.
  • Az iterálható elemnek kivonhatónak kell lennie.
  A G-Core Labs CDN segítségével gyorsabban eljuttathatja az alkalmazás tartalmát a felhasználókhoz

Most, hogy tudjuk, hogyan kell a Counter használatával számlálóobjektumokat létrehozni bármely Python iterálhatóból, kezdjük el a kódolást.

Az oktatóanyagban használt példák megtalálhatók ebben a GitHub-összefoglalóban.

Hogyan lehet számlálóobjektumot létrehozni a Python Iterables alkalmazásból

Hozzunk létre egy Python-karakterláncot, mondjuk „reneszánsz”, és nevezzük szónak.

>>> word = "renaissance"

Célunk egy olyan szótár létrehozása, amelyben a karakterlánc minden betűjét leképezzük a karakterláncban való előfordulások számára. Az egyik megközelítés a hurkok használata, ahogy az ábrán látható:

>>> letter_count = {}
>>> for letter in word:
...     if letter not in letter_count:
...         letter_count[letter] = 0
...     letter_count[letter] += 1
...
>>> letter_count
{'r': 1, 'e': 2, 'n': 2, 'a': 2, 'i': 1, 's': 2, 'c': 1}

Elemezzük, mit csinál a fenti kódrészlet:

  • A letter_count inicializálása egy üres Python-szótárban.
  • Végigkarikázik a karakterláncot.
  • Ellenőrzi, hogy a betű szerepel-e a letter_count szótárban.
  • Ha nincs betű, akkor 0 értékkel adja hozzá, majd 1-gyel növeli az értéket.
  • A szóban szereplő betű minden előfordulásakor a betűnek megfelelő érték 1-gyel növekszik.
  • Ez mindaddig folytatódik, amíg végig nem körözzük a teljes karakterláncot.

A letter_count szótárt – saját kezűleg – a for loop használatával hoztuk létre a karakterláncszó között.

Most használjuk a Counter osztályt a gyűjtemények modulból. Csak át kell adnunk a stringet a Counter()-nek, hogy megkapjuk a letter_count értéket anélkül, hogy az iterables ciklusokon át kellene lépni.

>>> from collections import Counter
>>> letter_count = Counter(word)
>>> letter_count
Counter({'e': 2, 'n': 2, 'a': 2, 's': 2, 'r': 1, 'i': 1, 'c': 1})

A számlálóobjektum egyben Python szótár is. Ezt a beépített isinstance() függvény segítségével ellenőrizhetjük:

>>> isinstance(letter_count,dict)
True

Mint látható, az isinstance(letter_count, dict) True értéket ad vissza, jelezve, hogy a letter_count számlálóobjektum a Python dict osztály egy példánya.

  Lógó behúzás létrehozása a Wordben és a Google Dokumentumokban

A számlálóobjektum módosítása

Eddig megtanultunk ellenobjektumokat létrehozni Python karakterláncokból.

A számláló objektumokat úgy is módosíthatja, hogy frissíti őket egy másik iterálható elemekkel, vagy kivon belőlük egy másik iterálhatóságot.

Számláló frissítése egy másik iterálható elemekkel

Inicializáljunk egy másik karakterláncot other_word:

>>> another_word = "effervescence"

Tegyük fel, hogy frissíteni szeretnénk a letter_count számláló objektumot a másik_szó karakterlánc elemeivel.

Használhatjuk az update() metódust a letter_count számlálóobjektumnál.

>>> letter_count.update(another_word)
>>> letter_count
Counter({'e': 7, 'n': 3, 's': 3, 'c': 3, 'r': 2, 'a': 2, 'f': 2, 'i': 1, 'v': 1})

A kimenetben azt látjuk, hogy a számlálóobjektum frissítve lett, és tartalmazza a másik_szó betűit és előfordulásuk számát is.

Elemek kivonása egy másik iterálhatóból

Most vonjuk ki a másik_szó értékét a letter_count objektumból. Ehhez használhatjuk a subtract() metódust. A .subtract() használatával kivonja a elemeinek megfelelő értékeket a -ből.

Vonjuk ki a másik_szót a betűk_számából.

>>> letter_count.subtract(another_word)
>>> letter_count
Counter({'e': 2, 'n': 2, 'a': 2, 's': 2, 'r': 1, 'i': 1, 'c': 1, 'f': 0, 'v': 0})

Látjuk, hogy a másik_szó betűinek megfelelő értékeket kivontuk, de a hozzáadott ‘f’ és ‘v’ kulcsokat nem távolította el. Most 0 értékre képezik le őket.

Megjegyzés: Itt egy másik_szót, egy Python karakterláncot adtunk át a subtract() metódushíváshoz. Átadhatunk Python számlálóobjektumot vagy más iterálható objektumot is.

Két ellentétes objektum metszéspontja a Pythonban

Néha érdemes megkeresni a metszéspontot két Python-számlálóobjektum között, hogy azonosítsa, mely kulcsok közösek a kettő között.

Hozzunk létre egy számlálóobjektumot, mondjuk, letter_count_2, az other_word ‘pezsgés’ karakterláncból.

>>> another_word = "effervescence"
>>> letter_count_2 = Counter(another_word)
>>> letter_count_2
Counter({'e': 5, 'f': 2, 'c': 2, 'r': 1, 'v': 1, 's': 1, 'n': 1})

Az egyszerű & operátor segítségével megtalálhatjuk a metszéspontot a betű_száma és a betű_száma_2 között.

>>> letter_count & letter_count_2
Counter({'e': 2, 'r': 1, 'n': 1, 's': 1, 'c': 1})

Figyelje meg, hogyan kapja meg a kulcsokat és a két szó közös előfordulásának számát. A „reneszánsz” és a „pezsgés” két „e” és egy „r”, „n”, „s” és „c” közös előfordulását tartalmazza.

  9 online Excel-tanfolyam kezdőknek és haladóknak

Keresse meg a leggyakrabban használt tételeket a most_common használatával

A Python számlálóobjektum másik gyakori művelete a leggyakrabban előforduló elemek megkeresése.

Ha a számlálóban a leggyakrabban előforduló k elemet szeretné megkapni, használja a most_common() metódust a számláló objektumon. Itt meghívjuk a most_common() függvényt a letter_count függvényben, hogy megtaláljuk a három leggyakrabban előforduló betűt.

>>> letter_count.most_common(3)
[('e', 2), ('n', 2), ('a', 2)]

Látjuk, hogy az „e”, „n” és „a” betűk kétszer fordulnak elő a „renaissance” szóban.

Ez különösen akkor hasznos, ha a számláló nagyszámú bejegyzést tartalmaz, és Ön a leggyakoribb gombokkal szeretne dolgozni.

Következtetés

Íme egy gyors áttekintés az oktatóprogramban tanultakról:

  • A Python beépített gyűjteménymoduljának Counter osztálya használható bármely iterálható elem számértékeinek szótárához. Győződjön meg arról, hogy az iterálható elem összes eleme kivonatolható.
  • Egy Python-számlálóobjektum tartalmát frissítheti egy másik számlálóobjektum tartalmával vagy bármely más iterálható elemmel az update() metódus használatával a következő szintaxissal: counter1.update(counter2). Vegye figyelembe, hogy a counter2 helyett bármilyen iterálhatót használhat.
  • Ha a frissített számlálóból el akarja távolítani valamelyik iterable tartalmát, használhatja a subtract() metódust: counter1.subtract(counter2).
  • Két számlálóobjektum közötti közös elemek megtalálásához használhatja a & operátort. Ha két számláló 1 és számláló 2, akkor a számláló1 és a számláló 2 e két számláló objektum metszéspontját adja vissza.
  • Ha a k leggyakoribb elemet szeretné megkapni egy számlálóban, használhatja a most_common() metódust. A counter.most_common(k) megadja a k leggyakoribb elemet és a megfelelő számokat.

Ezután tanulja meg az alapértelmezett dict használatát, amely egy másik osztály a gyűjtemények modulban. A hiányzó kulcsok kezelésére használhatja az alapértelmezett dict-et a szokásos Python-szótár helyett.