Geekflare wird von unserem Publikum unterstützt. Wir können Affiliate-Provisionen durch den Kauf von Links auf dieser Website verdienen.
Teilen:

So verwenden Sie den Python-Zähler aus dem Collections-Modul

How-to-Use-Pythons-Counter-from-Collections-Modul
Invicti Web Application Security Scanner – die einzige Lösung, die eine automatische Verifizierung von Schwachstellen mit Proof-Based Scanning™ bietet.

In diesem Lernprogramm erfahren Sie, wie Sie das Zählerobjekt aus dem Sammlungsmodul von Python verwenden.

Wenn Sie in Python mit langen Sequenzen arbeiten, z. B. Python-Listen oder -Strings, müssen Sie möglicherweise manchmal die speichern Artikel die in der Sequenz erscheinen und die Anzahl Sie erscheinen.

Ein Python-Wörterbuch ist eine geeignete eingebaute Datenstruktur für solche Anwendungen. Die Counter-Klasse von Python aus dem Collections-Modul kann dies jedoch vereinfachen, indem sie einen Zähler erstellt, der ein Wörterbuch von Elementen und ihrer Anzahl in der Sequenz ist.

In den nächsten Minuten lernen Sie Folgendes:

  • Verwenden Sie das Counter-Objekt von Python 
  • Erstellen Sie ein Python-Wörterbuch, um Zählwerte von Elementen in einem Iterable zu speichern 
  • Schreiben Sie das Wörterbuch mithilfe des Zählers von Python mit einer vereinfachten Syntax neu
  • Führen Sie Operationen wie das Aktualisieren und Subtrahieren von Elementen durch und finden Sie Schnittpunkte zwischen zwei Gegenobjekten 
  • Holen Sie sich die häufigsten Artikel in die Theke, indem Sie die verwenden most_common() Methode

Lassen Sie uns loslegen!

Python Collections Module and Counter Class

Sie verwenden häufig a Python-Wörterbuch besteht darin, die Elemente und ihre Anzahl in einem Iterable zu speichern. Die Elemente und die Anzahl werden als Schlüssel bzw. Werte gespeichert.

Da die Counter class Teil des integrierten Collections-Moduls von Python ist, können Sie es wie folgt in Ihr Python-Skript importieren:

from collections import Counter

Nachdem Sie die Counter-Klasse wie erwähnt importiert haben, können Sie ein Counter-Objekt wie gezeigt instanziieren:

<counter_object> = Counter(iterable)

Hier:

  • iterable ist ein beliebiges gültiges Python-Iterable, z. B. eine Python-Liste, ein String oder ein Tupel.
  • Die Elemente im Iterable sollten sein hashbar.

Jetzt wissen wir, wie man es benutzt Counter Beginnen wir mit dem Programmieren, um Zählerobjekte aus beliebigen Python-Iterablen zu erstellen.

Die in diesem Tutorial verwendeten Beispiele finden Sie in diesen GitHub-Kern.

How to Create a Counter Object from Python Iterables

Erstelle-ein-Gegenobjekt-aus-Python-Iterablen

Lassen Sie uns einen Python-String erstellen, sagen wir „Renaissance“, und nennen Sie ihn word.

>>> word = "renaissance"

Unser Ziel ist es, ein Wörterbuch zu erstellen, in dem jeder Buchstabe in der word Zeichenfolge wird der Häufigkeit zugeordnet, mit der sie in der Zeichenfolge vorkommt. Ein Ansatz besteht darin, for-Schleifen wie gezeigt zu verwenden:

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

Lassen Sie uns analysieren, was das obige Code-Snippet tut:

  • Initialisiert letter_count zu einem leeren Python-Wörterbuch.
  • Schleifen durch die word String.
  • Überprüft, ob letter ist in der letter_count Wörterbuch.
  • If letter nicht vorhanden ist, wird es mit einem Wert von hinzugefügt 0 und erhöht anschließend den Wert um 1.
  • Für jedes Auftreten von letter in word, der entsprechende Wertletter wird um 1 erhöht.
  • Dies wird fortgesetzt, bis wir die gesamte Zeichenfolge durchlaufen.

Wir haben die konstruiert letter_count Wörterbuch – allein – mit for-Schleife um die Saite durchzuschleifen word.

Lassen Sie uns nun die Counter-Klasse aus dem Sammlungsmodul verwenden. Wir müssen nur die passieren word Zeichenfolge an Counter() bekommen letter_count ohne Iterables durchlaufen zu müssen.

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

Das Gegenobjekt ist auch a Python-Wörterbuch. Wir können das eingebaute verwenden isinstance() Funktion, um dies zu überprüfen:

>>> isinstance(letter_count,dict)
True

Wie gesehen, isinstance(letter_count, dict) Rückgabe True was darauf hinweist, dass das Gegenobjekt letter_count ist eine Instanz von Python dict Klasse.

Modifying the Counter Object

Bisher haben wir gelernt, Zählerobjekte aus Python-Strings zu erstellen.

Sie können Zählerobjekte auch ändern, indem Sie sie mit Elementen aus einem anderen Iterable aktualisieren oder ein anderes Iterable von ihnen subtrahieren.

Aktualisieren eines Zählers mit Elementen aus einem anderen Iterable

Lassen Sie uns einen anderen String initialisieren another_word:

>>> another_word = "effervescence"

Angenommen, wir möchten die aktualisieren letter_count Gegenobjekt mit den Gegenständen aus another_word String.

Wir können das benutzen update() -Methode auf dem Zählerobjekt letter_count.

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

In der Ausgabe sehen wir, dass das Zählerobjekt aktualisiert wurde, um auch die Buchstaben und ihre Häufigkeit von zu enthalten another_word.

Subtrahieren von Elementen von einem anderen Iterable

Nun subtrahieren wir den Wert von another_word von letter_count Objekt. Dazu können wir die verwenden subtract() Methode. Verwenden <counter-object>.subtract(<some-iterable>) subtrahiert die Werte, die den Elementen in entsprechen <some-iterable> von dem <counter-object>.

Subtrahieren wir another_word von letter_count.

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

Wir sehen, dass die Werte den Buchstaben in entsprechen another_word wurden subtrahiert, aber die hinzugefügten Schlüssel 'f' und 'v' werden nicht entfernt. Sie werden jetzt einem Wert von 0 zugeordnet.

Hinweis: Hier sind wir vorbeigekommen another_word, eine Python-Zeichenfolge, an die subtract() Methodenaufruf. Wir können auch ein Python-Zählerobjekt oder ein anderes Iterable übergeben.

Intersection Between Two Counter Objects in Python

Schnittpunkt-zwischen-zwei-Gegenobjekten-in-Python

Vielleicht möchten Sie manchmal die finden Überschneidung zwischen zwei Python-Zählerobjekten, um festzustellen, welche Schlüssel zwischen den beiden gleich sind.

Lassen Sie uns ein Gegenobjekt erstellen, sagen wir, letter_count_2, Aus der another_word Zeichenfolge „Aufbrausen“.

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

Wir können den einfachen Operator & verwenden, um die Schnittmenge zwischen zu finden letter_count funktioniert letter_count_2.

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

Beachten Sie, wie Sie die Schlüssel und die Anzahl der Vorkommen erhalten verbreitet zu den beiden Wörtern. Sowohl 'Renaissance' als auch 'Effervescence' enthalten zwei Vorkommen von 'e' und jeweils ein Vorkommen von 'r', 'n', 's' und 'c' gemeinsam.

Find the Most Frequent Items Using most_common

Eine weitere häufige Operation für das Python-Zählerobjekt besteht darin, die am häufigsten vorkommenden Elemente zu finden.

Um die Top-k der häufigsten Artikel in den Zähler zu bekommen, können Sie die verwenden most_common() -Methode auf dem Zählerobjekt. Hier rufen wir an most_common() on letter_count um die drei am häufigsten vorkommenden Buchstaben zu finden.

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

Wir sehen, dass die Buchstaben „e“, „n“ und „a“ zweimal im Wort „Renaissance“ vorkommen.

Dies ist besonders hilfreich, wenn der Zähler viele Einträge enthält und Sie daran interessiert sind, mit dem zu arbeiten häufigste Schlüssel.

Fazit

Hier ist ein kurzer Überblick über das, was wir im Tutorial gelernt haben:

  • Das Counter -Klasse aus dem integrierten Collections-Modul von Python kann verwendet werden, um ein Wörterbuch mit Zählwerten aller Elemente in jedem Iterable zu erhalten. Sie sollten sicherstellen, dass alle Elemente in der Iterable gehashbar sind.
  • Sie können den Inhalt eines Python-Zählerobjekts mit dem Inhalt eines anderen Zählerobjekts oder eines anderen iterierbaren Objekts aktualisieren, indem Sie die verwenden update() Methode mit der Syntax: counter1.update(counter2). Beachten Sie, dass Sie anstelle von jedes Iterable verwenden können counter2.
  • Wenn Sie den Inhalt eines der Iterables aus dem aktualisierten Zähler entfernen möchten, können Sie die verwenden subtract() Verfahren: counter1.subtract(counter2)
  • Um die gemeinsamen Elemente zwischen zwei Gegenobjekten zu finden, können Sie die verwenden & Operator. Gegeben zwei Zähler counter1 funktioniert counter2, counter1 & counter2 gibt den Schnittpunkt dieser beiden Zählerobjekte zurück.
  • Um die k häufigsten Artikel in einem Zähler zu erhalten, können Sie die verwenden most_common() Methode. counter.most_common(k) gibt die k häufigsten Gegenstände und die jeweiligen Anzahlen an.

Als nächstes lernen So verwenden Sie das Standard-Diktat, eine weitere Klasse im Sammlungsmodul. Sie können default dict anstelle eines regulären Python-Wörterbuchs verwenden, um fehlende Schlüssel zu behandeln.

Danke an unsere Sponsoren
Weitere großartige Lektüre zum Thema Entwicklung
Treiben Sie Ihr Geschäft an
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti verwendet das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu verifizieren und innerhalb weniger Stunden umsetzbare Ergebnisse zu generieren.
    Versuchen Sie es mit Invicti
  • Web-Scraping, Wohn-Proxy, Proxy-Manager, Web-Unlocker, Suchmaschinen-Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie es mit Brightdata
  • Semrush ist eine All-in-One-Lösung für digitales Marketing mit mehr als 50 Tools in den Bereichen SEO, Social Media und Content-Marketing.
    Versuchen Sie es mit Semrush
  • Intruder ist ein Online-Schwachstellenscanner, der Cyber-Sicherheitslücken in Ihrer Infrastruktur findet, um kostspielige Datenschutzverletzungen zu vermeiden.
    MIT DER INTELLIGENTEN SCHADENKALKULATION VON Intruder