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

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 derletter_count
Wörterbuch. - If
letter
nicht vorhanden ist, wird es mit einem Wert von hinzugefügt0
und erhöht anschließend den Wert um 1. - Für jedes Auftreten von
letter
inword
, 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 diesubtract()
Methodenaufruf. Wir können auch ein Python-Zählerobjekt oder ein anderes Iterable übergeben.
Intersection Between Two Counter Objects 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önnencounter2
. - 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
funktioniertcounter2
,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.