Python Counter in collections: Effizientes Zählen, Aktualisieren und arithmetische Operationen
Python Counter in collections: Effizientes Zählen, Aktualisieren und arithmetische Operationen
Was ist Python Counter?
Pythons Counter ist ein spezialisierter Container, der die Vorkommen jedes Elements in einem Iterierbaren zählt. Er erbt von dict und speichert Elemente als Keys mit ihren Counts als Values, was ihn zu einem idealen Werkzeug für Hash-Tabellen-ähnliches Zählen macht.
Warum Python Counter verwenden?
- Es speichert Daten in einer ungeordneten, Hash-Tabellen-ähnlichen Struktur, mit Elementen als Keys und ihren Counts als Values.
- Das Zählen von Elementen in jedem Iterierbaren – Strings, Listen, Tupel oder Dictionaries – ist unkompliziert.
- Eingebaute arithmetische Operationen (Addition, Subtraktion, Durchschnitt, Vereinigung) ermöglichen mächtige mengenartige Manipulationen.
- Es kann Counts von anderen
Counter-Instanzen nahtlos aggregieren.
Erste Schritte mit Counter
Importieren Sie die Klasse aus collections:
from collections import Counter
Jetzt können Sie jedes Iterierbare an Counter übergeben und eine Count-Mapping erhalten.
Beispiel – Liste zählen
liste1 = ['x','y','z','x','x','x','y','z'] print(Counter(liste1))
Ausgabe:
Counter({'x': 4, 'y': 2, 'z': 2})
Beispiel – String zählen
mein_str = "Willkommen bei Guru99 Tutorials!" print(Counter(mein_str))
Ausgabe:
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})
Beispiel – Dictionary zählen
dict1 = {'x': 4, 'y': 2, 'z': 2}
print(Counter(dict1))
Ausgabe:
Counter({'x': 4, 'y': 2, 'z': 2})
Beispiel – Tupel zählen
tupel1 = ('x','y','z','x','x','x','y','z')
print(Counter(tupel1))
Ausgabe:
Counter({'x': 4, 'y': 2, 'z': 2})
Initialisieren, Aktualisieren und Zugreifen auf Counters
Initialisieren
print(Counter("Willkommen bei Guru99 Tutorials!")) # string
print(Counter(['x','y','z','x','x','x','y','z'])) # liste
print(Counter({'x': 4, 'y': 2, 'z': 2})) # dict
print(Counter(('x','y','z','x','x','x','y','z'))) # tupel
# Leerer Counter
_count = Counter()
Aktualisieren
_count.update('Willkommen bei Guru99 Tutorials!')
print(_count)
Ausgabe:
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})
Counts zugreifen
print('%s : %d' % ('u', _count['u']))
for char in 'Guru':
print('%s : %d' % (char, _count[char]))
Ausgabe:
u : 3 G : 1 u : 3 r : 2 u : 3
Element löschen
del _count['x'] print(_count)
Ausgabe:
Counter({'y': 2, 'z': 2})
Arithmetische Operationen
Counter unterstützt mengenartige Arithmetik. Positive Counts werden beibehalten; negative Werte werden im Ergebnis verworfen.
counter1 = Counter({'x': 4, 'y': 2, 'z': -2})
counter2 = Counter({'x1': -12, 'y': 5, 'z': 4})
# Addition
print(counter1 + counter2)
# Subtraktion
print(counter1 - counter2)
# Durchschnitt (Intersection)
print(counter1 & counter2)
# Vereinigung
print(counter1 | counter2)
Ausgabe:
Counter({'y': 7, 'x': 4, 'z': 2})
Counter({'x1': 12, 'x': 4})
Counter({'y': 2})
Counter({'y': 5, 'x': 4, 'z': 4})
Wichtige Methoden
- elements() – Gibt einen Iterator über Elemente mit positiven Counts zurück.
- most_common([n]) – Gibt die n häufigsten Elemente als Liste von (elem, count) Tupeln zurück.
- subtract(other) – Subtrahiert Counts von einem anderen Counter.
- update(other) – Addiert Counts von einem anderen Counter.
elements() verwenden
counter = Counter({'x': 5, 'y': 2, 'z': -2, 'x1': 0})
for e in counter.elements():
print(e)
Ausgabe:
x x x x x y y
most_common() verwenden
counter = Counter({'x': 5, 'y': 12, 'z': -2, 'x1': 0})
print(counter.most_common(2))
print(counter.most_common())
Ausgabe:
[('y', 12), ('x', 5)]
[('y', 12), ('x', 5), ('x1', 0), ('z', -2)]
subtract() verwenden
c1 = Counter({'x': 5, 'y': 12, 'z': -2, 'x1': 0})
c2 = Counter({'x': 2, 'y': 5})
c1.subtract(c2)
print(c1)
Ausgabe:
Counter({'y': 7, 'x': 3, 'x1': 0, 'z': -2})
update() verwenden
c1 = Counter({'x': 5, 'y': 12, 'z': -2, 'x1': 0})
c2 = Counter({'x': 2, 'y': 5})
c1.update(c2)
print(c1)
Ausgabe:
Counter({'y': 17, 'x': 7, 'x1': 0, 'z': -2})
Counts neu zuweisen
counter = Counter({'x': 5, 'y': 12, 'z': -2, 'x1': 0})
counter['y'] = 20
print(counter)
Ausgabe:
Counter({'y': 20, 'x': 5, 'x1': 0, 'z': -2})
Element-Counts abrufen und setzen
counter = Counter({'x': 5, 'y': 12, 'z': -2, 'x1': 0})
print(counter['y'])
counter['y'] = 20
counter['y1'] = 10
print(counter)
Ausgabe:
12
Counter({'y': 20, 'y1': 10, 'x': 5, 'x1': 0, 'z': -2})
Zusammenfassung
- Counter ist eine Dictionary-Unterklasse, die Elemente in jedem Iterierbaren zählt.
- Es unterstützt effizientes Zählen, arithmetische Operationen und eine Suite von Hilfsmethoden.
- Häufige Anwendungsfälle sind Frequenzanalyse, Histogramm-Erstellung und Datenaggregation.
- Für vollständige Dokumentation siehe die Python Counter Docs.
Python
- Pythons strip()-Methode meistern: Umfassender Leitfaden & Praxisbeispiele
- Pythons str.count(): Zeichen & Teilstrings zählen mit Beispielen
- Python format()-Strings meistern mit klaren Beispielen
- Python len(): Praktischer Leitfaden zur Messung von Objektlängen
- Pythons String.find()-Methode meistern: Syntax, Beispiele & Alternativen
- Python Lambda-Funktionen meistern: Praxisbeispiele & Best Practices
- Python round()-Funktion erklärt mit praktischen Beispielen
- Pythons map()-Funktion meistern: Syntax, Beispiele und Best Practices
- Python timeit(): Ausführungszeit messen mit praktischen Beispielen
- Python list.count(): Experten-Guide mit praktischen Beispielen