Die Klasse Python Counter wird genutzt, um Elemente in einem Container zu zählen. Es handelt sich dabei um eine Dic­tion­a­ry-Un­ter­klas­se, die in Kom­bi­na­ti­on mit un­ter­schied­li­chen Methoden zahl­rei­che denkbare Ein­satz­zwe­cke hat.

Was ist Python Counter?

Bei Python Counter handelt es sich um ein nütz­li­ches Tool, das ver­schie­de­ne Elemente in einer Liste zählen kann und anzeigt, wie häufig diese Elemente vorkommen. Es handelt sich dabei um eine Un­ter­klas­se von Dic­tion­a­ry. Während diese Aufgabe bei einer kurzen Abfolge von Werten noch einfach und manuell erledigt werden kann, ist das bei langen Da­ten­sät­zen deutlich kom­pli­zier­ter. Python Counter selbst ist eine integre Variable, die den Aus­gangs­wert „Null“ hat. Ein einziger Counter gibt die Häu­fig­keit eines Objektes aus. Möchten Sie mehrere un­ter­schied­li­che Objekte be­rück­sich­ti­gen, nutzen Sie für jedes einzelne einen eigenen Zähler.

Die Counter-Klasse kann auf Listen, Python-Tuples, Dic­tion­a­rys und Python-Strings an­ge­wen­det werden. Ihre Syntax sieht wie folgt aus:

Counter(list)
python

In den folgenden Ab­schnit­ten zeigen wir Ihnen anhand einiger einfacher Beispiele, wie Sie Python Counter in der Praxis einsetzen können.

Web­hos­ting
Das beste Web­hos­ting zum Spit­zen­preis
  • 3x schneller und 60 % günstiger
  • Maximale Ver­füg­bar­keit mit > 99.99 %
  • Nur bei IONOS: Bis zu 500 GB Spei­cher­platz inklusive

Python Counter mit einer Liste

Im ersten Beispiel erstellen wir eine einfache Liste mit un­ter­schied­li­chen Werten. Diese sieht so aus:

Liste = ['a', 'a', 'b', 'a', 'c', 'b', 'b', 'c', 'a', 'c', 'b', 'c', 'c']
python

Die Liste hat drei ver­schie­de­ne Elemente: ‘a’, ‘b’ und ‘c’. Um nun her­aus­zu­fin­den, wie häufig jedes dieser Elemente enthalten ist, wenden wir Python Counter an. Die Ausgabe würde dann fol­gen­der­ma­ßen aussehen:

Counter({'c' : 5, 'a' : 4, 'b' : 4})
python

Um Python Counter ein­zu­set­zen, muss die Klasse zunächst im­por­tiert werden. Das Ergebnis wird mit print aus­ge­ge­ben. Der komplette Code für dieses Beispiel wäre dann dieser:

from collections import Counter
Liste = ['a', 'a', 'b', 'a', 'c', 'b', 'b', 'c', 'a', 'c', 'b', 'c', 'c']
counter_liste = Counter(Liste)
print(Counter(Liste))
python

Die daraus re­sul­tie­ren­de Ausgabe sieht so aus:

Counter({'c' : 5, 'a' : 4, 'b' : 4})
python

So funk­tio­niert die Counter-Klasse mit einem Tuple

Im zweiten Beispiel gehen wir sehr ähnlich vor. Dieses Mal soll Python Counter auf ein Tuple an­ge­wen­det werden. Tuples werden in Python genutzt, um mehrere Werte in einer Variablen ab­spei­chern zu können. Da es sich um eine geordnete Zu­sam­men­fas­sung von Objekten handelt, wird die Rei­hen­fol­ge be­rück­sich­tigt. Die Objekte werden in runde Klammern gesetzt und durch Kommata getrennt. Ent­spre­chend hat der Code folgende Form:

from collections import Counter
Tupel = ('a', 'a', 'b', 'a', 'c', 'b', 'b', 'c', 'a', 'c', 'b', 'c', 'c')
print(Counter(Tupel))
python

Die Ausgabe ent­spricht dem vor­he­ri­gen Beispiel:

Counter({'c' : 5, 'a' : 4, 'b' : 4})
python

Einsatz in der Klasse Dictionary

In einem Dic­tion­a­ry werden Elemente als Schlüssel-Wert-Paare ge­spei­chert und in ge­schwun­ge­ne Klammern gesetzt. Wenn Sie Python Counter für das Dic­tion­a­ry anwenden, wird dieses zu einem Hashtable-Objekt um­ge­wan­delt. Die Elemente werden dadurch zu Schlüs­seln und ihre Werte zur Anzahl des ur­sprüng­li­chen Dic­tion­a­rys. Für unser Beispiel von oben könnte dies so aussehen:

from collections import Counter
Dictionary = {'a' : 4, 'b' : 4, 'c' : 5}
counter_dictionary = Counter(Dictionary)
print(Counter(Dictionary))
python

Die Ausgabe ist dann erneut diese:

Counter({'c' : 5, 'a' : 4, 'b' : 4})
python
Tipp

In nur drei Schritten ans Ziel: Mit Deploy Now von IONOS verbinden Sie Ihr Re­po­si­to­ry einfach, führen den Build au­to­ma­tisch durch und greifen an­schlie­ßend auf eine zu­ver­läs­si­ge In­fra­struk­tur zu. Pro­fi­tie­ren Sie dabei von passenden Tarifen und einer fach­kun­di­gen Beratung!

Python Counter in Kom­bi­na­ti­on mit einem einfachen String

Einen Eindruck davon, welche Zeit­er­spar­nis und Ar­beits­er­leich­te­rung Python Counter bieten kann, bekommen Sie, wenn Sie die Klasse auf einen String anwenden. Ein String ist die Abfolge von Zeichen, die durch An­füh­rungs­stri­che markiert werden. Auch Leer­zei­chen werden dabei be­rück­sich­tigt. Wir wählen den folgenden String für unser Beispiel:

from collections import Counter
String = "Dies ist ein Beispiel."
counter_string = Counter(String)
print(Counter(String))
python

Nun wird jedes Zeichen als Substring gezählt. Die Ausgabe könnte also so aussehen:

Counter({'i': 4, 'e': 3, 's': 3, ' ': 3, 't': 2, 'D': 1, 'n': 1, 'B': 1, 'j': 1, 'p': 1, 'l': 1, '.': 1})
python

Er­wei­te­run­gen mit .update()

Die Optionen, die Python Counter bietet, sind viel­fäl­tig. So ist es zum Beispiel auch möglich, eine be­stehen­de Zählung zu erweitern. Dafür nutzen Sie .update() und verbinden diese Er­wei­te­rung mit dem Counter. Dabei erstellen wir zunächst einen einfachen Code nach dem obigen Prinzip, wobei wir den String zur Ab­wechs­lung nicht extra aus­zeich­nen:

from collections import Counter
Counter("blau")
print(Counter(String))
python

Unsere Ausgabe ist dann diese:

Counter({'b' : 1, 'l' : 1, 'a' : 1, 'u' : 1})
python

Wenden wir nun .update() an, sieht der Code so aus:

from collections import Counter
farben = Counter({'b' : 1, 'l' : 1, 'a' : 1, 'u' : 1})
farben.update("grau")
print(farben)
python

Dadurch erhalten wir auch eine ak­tua­li­sier­te Ausgabe:

Counter({'a' : 2, 'u' : 2, 'b' : 1, 'l' : 1, 'g' : 1, 'r' : 1})
python

Auf die Werte von Python Counter zugreifen

Sie haben die Mög­lich­keit, auf die Werte von Python Counter zu­zu­grei­fen, da diese Klasse ähnlich wie Dictionary funk­tio­niert. Im folgenden Code­bei­spiel zeigen wir Ihnen einige Va­ria­tio­nen und die da­zu­ge­hö­ri­gen Ausgaben. Hierbei fungieren „letters“ als Schlüssel (keys) und „counts“ als Werte (values).

from collections import Counter
letters = Counter("flachdach")
letters["a"]
2
letters["h"]
2
python
for letter in letters:
	print(letter, letters[letter])
f 1
l 1
a 2
c 2
h 2
d 1
python

So sähe ein Beispiel mit der Methode .keys() aus:

for letter in letters.keys():
	print(letter, letters[letter])
f 1
l 1
a 2
c 2
h 2
d 1
python

Dies ist ein Beispiel mit .values():

for count in letters.values():
	print(count)
1
1
2
2
2
1
python

Dies ist die Methode .items():

for letter, count in letters.items():
	print(letter, count)
f 1
l 1
a 2
c 2
h 2
d 1
python

Elemente aus der Klasse löschen

Wenn Sie ein Element aus Python Counter löschen möchten, ist dafür del die richtige Wahl:

from collections import Counter
beispiel = {'b' : 1, 'l' : 1, 'a' : 1, 'u' : 1}
del beispiel["b"]
print(Counter(beispiel))
python

Ihre neue Ausgabe sieht dann fol­gen­der­ma­ßen aus:

Counter({'l' : 1, 'a' : 1, 'u' : 1})
python

Größte Anhäufung bestimmen mit most_common(n)

Mit most_common(n) für Python Counter können Sie her­aus­fin­den, welche Elemente am häu­figs­ten und am sel­tens­ten vertreten sind. Dafür überlegen wir uns ein Beispiel, bei dem ein Produkt in ver­schie­de­nen Farben auf­ge­lis­tet ist. Neben den Farben ist hin­ter­legt, wie häufig sich das Produkt in der ent­spre­chen­den Variante noch im Lager befindet. Ein negativer Wert bedeutet, dass sich kein ent­spre­chen­der Artikel mehr im Lager befindet, diese Variante aber trotzdem vor­be­stellt wurde. Möchten wir nun über­prü­fen, von welcher Variante es noch die meisten Artikel gibt, nutzen wir dafür diesen Code:

from collections import Counter
farbvarianten = Counter({'blau' : 2, 'grau' : -1, 'schwarz' : 0})
meiste_artikel = farbvarianten.most_common(1)
print(meiste_artikel)
python

Die Ausgabe ist dann diese:

[('blau' : 2)]
python

Auch die kleinste Ar­ti­kel­an­zahl können wir uns anzeigen lassen. Dafür ändern wir den Code fol­gen­der­ma­ßen ab:

from collections import Counter
farbvarianten = Counter({'blau' : 2, 'grau' : -1, 'schwarz' : 0})
wenigste_artikel = farbvarianten.most_common()[:-2:-1]
print(wenigste_artikel)
python

Die ent­spre­chen­de Ausgabe:

[('grau' : -1)]
python

Arith­me­ti­sche Rechnung mit Python Counter

Auch arith­me­ti­sche Rech­nun­gen sind mit der Hilfe von Python Counter möglich. Wichtig zu beachten ist dabei al­ler­dings, dass nur positive Werte aus­ge­ge­ben werden. Im folgenden Code probieren wir einige Re­chen­ar­ten aus.

Eine einfache Addition:

from collections import Counter
x = Counter(a=4, b=2, c=1)
y = Counter(a=2, b=1, c=2)
z = x + y
print(z)
python
Counter({'a' : 6, 'b' : 3, 'c' : 3})
python

So sieht die Sub­trak­ti­on aus:

from collections import Counter
x = Counter(a=4, b=2, c=1)
y = Counter(a=2, b=1, c=2)
z = x - y
print(z)
python
Counter({'a' : 2, 'b' : 1})
python

Da der Wert von ‘c’ nun negativ wäre, wird er nicht mit aus­ge­ge­ben.

Da­ten­ty­pen nach Häu­fig­keit sortieren

Eine weitere Option, die Ihnen die Klasse bietet, ist eine Auf­zäh­lung von Da­ten­ty­pen in einem Ordner. Dafür stellen wir uns bei­spiel­haft einen Ordner vor, der „Bilder“ heißt und zahl­rei­che un­ter­schied­li­che Dateien mit ver­schie­de­nen Da­ten­ty­pen enthält. Für eine Auf­lis­tung verwenden wir den folgenden Code:

import pathlib
from collections import Counter
ordner_pfad = pathlib.Path("Bilder/")
extensions = [entry.suffix for entry in ordner_pfad.iterdir() if entry.is_file()]
extension_counter = Counter(extensions)
print(extension_counter)
python

Negative und Nullwerte aus­schlie­ßen

Um Nullwerte oder negative Werte mit Python Counter zu entfernen, nutzen Sie diesen Code:

from collections import Counter
werte = Counter(a=6, b=0, c=1, d=-4)
werte = +werte
print(werte)
python

Die ent­spre­chen­de Ausgabe ist dann diese:

Counter({'a' : 6, 'c' : 1})
python
Tipp

In unserem Digital Guide finden Sie noch zahl­rei­che weitere Artikel rund um die beliebte Pro­gram­mier­spra­che. Hier erklären wir, welche Python-Ope­ra­to­ren es gibt, führen Sie durch die In­stal­la­ti­on von Python und zeigen Ihnen die wich­tigs­ten Python-Grund­la­gen und wertvolle Tipps.

Zum Hauptmenü