Die Python Counter-Klasse ist Teil des Collections-Moduls. Counter ist eine Unterklasse von Dictionary und wird verwendet, um Elemente und ihre Anzahl zu verfolgen.
Python Counter
Counter ist eine ungeordnete Sammlung, in der Elemente als Schlüssel eines Dict
gespeichert sind und ihre Anzahl als Wert des Dict. Die Zählung der Counter-Elemente kann positive, null oder negative Ganzzahlen sein. Es gibt jedoch keine Einschränkung für seine Schlüssel und Werte. Obwohl Werte als Zahlen gedacht sind, können auch andere Objekte gespeichert werden.
Python Counter-Objekt erstellen
Wir können einen leeren Counter erstellen oder mit einigen Anfangswerten beginnen.
from collections import Counter
# Leerer Counter
counter = Counter()
print(counter) # Counter()
# Counter mit Anfangswerten
counter = Counter(['a', 'a', 'b'])
print(counter) # Counter({'a': 2, 'b': 1})
counter = Counter(a=2, b=3, c=1)
print(counter) # Counter({'b': 3, 'a': 2, 'c': 1})
Wir können auch ein beliebiges Iterable als Argument für die Erstellung eines Counter-Objekts verwenden. Daher können auch ein Zeichenkettenliteral und eine Liste für die Erstellung eines Counter-Objekts verwendet werden.
# Iterable als Argument für Counter
counter = Counter('abc')
print(counter) # Counter({'a': 1, 'b': 1, 'c': 1})
# Liste als Argument für Counter
words_list = ['Cat', 'Dog', 'Horse', 'Dog']
counter = Counter(words_list)
print(counter) # Counter({'Dog': 2, 'Cat': 1, 'Horse': 1})
# Dictionary als Argument für Counter
word_count_dict = {'Dog': 2, 'Cat': 1, 'Horse': 1}
counter = Counter(word_count_dict)
print(counter) # Counter({'Dog': 2, 'Cat': 1, 'Horse': 1})
Wie oben erwähnt, können wir auch nicht-numerische Daten für Zählwerte verwenden, aber das wird den Zweck der Counter-Klasse beeinträchtigen.
# Counter funktioniert auch mit Nicht-Zahlen
special_counter = Counter(name='Pankaj', age=20)
print(special_counter) # Counter({'name': 'Pankaj', 'age': 20})
Python Counter Methoden
Lassen Sie uns die Methoden der Counter-Klasse und einige andere Operationen betrachten, die wir damit durchführen können.
Zählen von Elementen
# Zählen erhalten
counter = Counter({'Dog': 2, 'Cat': 1, 'Horse': 1})
countDog = counter['Dog']
print(countDog) # 2
Wenn wir versuchen, die Anzahl eines nicht vorhandenen Schlüssels abzurufen, wird es 0 zurückgeben und keinen KeyError
werfen.
# Zählen erhalten für nicht vorhandenen Schlüssel, wirft keinen KeyError
print(counter['Unicorn']) # 0
Festlegen der Anzahl von Elementen
Wir können auch die Anzahl eines vorhandenen Elements im Zähler festlegen. Wenn das Element nicht existiert, wird es dem Zähler hinzugefügt.
counter = Counter({'Dog': 2, 'Cat': 1, 'Horse': 1})
# Zählen festlegen
counter['Horse'] = 0
print(counter) # Counter({'Dog': 2, 'Cat': 1, 'Horse': 0})
# Zählen festlegen for non-existing key, adds to Counter
counter['Unicorn'] = 1
print(counter) # Counter({'Dog': 2, 'Cat': 1, 'Unicorn': 1, 'Horse': 0})
Ein Element aus dem Counter löschen
Wir können del
verwenden, um ein Element aus dem Counter-Objekt zu löschen.
# Element aus dem Counter löschen
del counter['Unicorn']
print(counter) # Counter({'Dog': 2, 'Cat': 1, 'Horse': 0})
elements()
Diese Methode gibt die Liste der Elemente im Counter zurück. Es werden nur Elemente mit positiven Zählungen zurückgegeben.
counter = Counter({'Dog': 2, 'Cat': -1, 'Horse': 0})
# elements()
elements = counter.elements() # doesn't return elements with count 0 or less
for value in elements:
print(value)
Der obige Code gibt „Dog“ zwei Mal aus, weil seine Anzahl 2 ist. Andere Elemente werden ignoriert, da sie keine positive Anzahl haben. Der Counter ist eine ungeordnete Sammlung, daher werden Elemente in keiner bestimmten Reihenfolge zurückgegeben.
most_common(n)
Diese Methode gibt die am häufigsten vorkommenden Elemente aus dem Counter zurück. Wenn wir keinen Wert für ’n‘ angeben, wird ein sortiertes Wörterbuch von den am häufigsten vorkommenden bis zu den am wenigsten vorkommenden Elementen zurückgegeben. Wir können Slicing verwenden, um die am wenigsten vorkommenden Elemente in diesem sortierten Wörterbuch zu erhalten.
counter = Counter({'Dog': 2, 'Cat': -1, 'Horse': 0})
# most_common()
most_common_element = counter.most_common(1)
print(most_common_element) # [('Dog', 2)]
least_common_element = counter.most_common()[:-2:-1]
print(least_common_element) # [('Cat', -1)]
subtract() und update()
Die Methode subtract()
des Zählers wird verwendet, um Elementzähler von einem anderen Zähler abzuziehen. Die Methode update()
wird verwendet, um Zähler von einem anderen Zähler hinzuzufügen.
counter = Counter('ababab')
print(counter) # Counter({'a': 3, 'b': 3})
c = Counter('abc')
print(c) # Counter({'a': 1, 'b': 1, 'c': 1})
# subtract
counter.subtract(c)
print(counter) # Counter({'a': 2, 'b': 2, 'c': -1})
# update
counter.update(c)
print(counter) # Counter({'a': 3, 'b': 3, 'c': 0})
Python Counter-Arithmetikoperationen
Auf Zählern können wir auch einige arithmetische Operationen durchführen, genau wie bei Zahlen. Jedoch werden nur Elemente mit positivem Zähler bei diesen Operationen zurückgegeben.
# Arithmetische Operationen
c1 = Counter(a=2, b=0, c=-1)
c2 = Counter(a=1, b=-1, c=2)
c = c1 + c2 # return items having +ve count only
print(c) # Counter({'a': 3, 'c': 1})
c = c1 - c2 # keeps only +ve count elements
print(c) # Counter({'a': 1, 'b': 1})
c = c1 & c2 # intersection min(c1[x], c2[x])
print(c) # Counter({'a': 1})
c = c1 | c2 # union max(c1[x], c2[x])
print(c) # Counter({'a': 2, 'c': 2})
Verschiedene Operationen auf Python-Countern
Lassen Sie uns einige Codeschnipsel für verschiedene Operationen betrachten, die wir auf Zählerobjekten durchführen können.
counter = Counter({'a': 3, 'b': 3, 'c': 0})
# Beispiele für verschiedene Operationen
print(sum(counter.values())) # 6
print(list(counter)) # ['a', 'b', 'c']
print(set(counter)) # {'a', 'b', 'c'}
print(dict(counter)) # {'a': 3, 'b': 3, 'c': 0}
print(counter.items()) # dict_items([('a', 3), ('b', 3), ('c', 0)])
# Entfernen von Elementen mit 0 oder negativem Zähler
counter = Counter(a=2, b=3, c=-1, d=0)
counter = +counter
print(counter) # Counter({'b': 3, 'a': 2})
# Alle Elemente löschen
counter.clear()
print(counter) # Counter()
Das ist alles für die Python Counter-Klasse.
Sie können den vollständigen Beispielcode von meinem GitHub-Repository herunterladen.
Referenz: Python Docs
Source:
https://www.digitalocean.com/community/tutorials/python-counter-python-collections-counter