Python Counter - Python Sammlungen Zähler
Die Python Counter-Klasse ist Teil des Collections-Moduls. Counter ist eine Unterklasse von Dictionary und wird verwendet, um Elemente und deren Anzahl zu verfolgen.
Python Zähler
Ein Counter ist eine ungeordnete Sammlung, in der Elemente als Dict-Schlüssel gespeichert werden und deren Anzahl als Diktwert. Die Zählungen der Counter-Elemente können positive, null oder negative ganze Zahlen sein. Es gibt jedoch keine Einschränkung für die Schlüssel und Werte. Obwohl die Werte Zahlen sein sollen, können wir auch andere Objekte speichern.
Erstellen eines Python-Zählerobjekts
Wir können einen leeren Zähler erstellen oder auch mit einigen Anfangswerten beginnen.
from collections import Counter
empty Counter
counter = Counter()
print(counter) # Counter()
Counter with initial values
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 jede Iterable als Argument verwenden, um ein Counter-Objekt zu erstellen. Sowohl String-Literale als auch Listen können ebenfalls verwendet werden, um ein Counter-Objekt zu erstellen.
Iterable as argument for Counter
counter = Counter('abc')
print(counter) # Counter({'a': 1, 'b': 1, 'c': 1})
List as argument to Counter
words_list = ['Cat', 'Dog', 'Horse', 'Dog']
counter = Counter(words_list)
print(counter) # Counter({'Dog': 2, 'Cat': 1, 'Horse': 1})
Dictionary as argument to 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 ich oben erwähnt habe, können wir auch nicht-numerische Daten für Zählwerte verwenden, aber das würde den Zweck der Counter-Klasse beeinträchtigen.
Counter works with non-numbers too
special_counter = Counter(name='Pankaj', age=20)
print(special_counter) # Counter({'name': 'Pankaj', 'age': 20})
Python Zähler-Methoden
Lass uns die Methoden der Counter-Klasse und einige andere Operationen, die wir damit durchführen können, genauer betrachten.
Anzahl der Elemente ermitteln
getting count
counter = Counter({'Dog': 2, 'Cat': 1, 'Horse': 1})
countDog = counter['Dog']
print(countDog) # 2
Wenn wir versuchen, die Anzahl eines nicht vorhandenen Schlüssels zu ermitteln, wird 0 zurückgegeben und es wird kein KeyError ausgelöst.
getting count for non existing key, don't cause KeyError
print(counter['Unicorn']) # 0
Anzahl der Elemente festlegen
Wir können auch die Anzahl des vorhandenen Elements im Zähler festlegen. Wenn das Element nicht vorhanden ist, wird es zum Zähler hinzugefügt.
counter = Counter({'Dog': 2, 'Cat': 1, 'Horse': 1})
setting count
counter['Horse'] = 0
print(counter) # Counter({'Dog': 2, 'Cat': 1, 'Horse': 0})
setting count 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 Zähler löschen
Wir können del verwenden, um ein Element aus dem Zählerobjekt zu löschen.
Delete element from Counter
del counter['Unicorn']
print(counter) # Counter({'Dog': 2, 'Cat': 1, 'Horse': 0})
elements()
Diese Methode gibt die Liste der Elemente im Zähler 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 wird "Hund" zwei Mal ausgeben, da seine Anzahl 2 ist. Andere Elemente werden ignoriert, da sie keine positive Anzahl haben. Ein Counter ist eine ungeordnete Sammlung, daher werden die Elemente in keiner bestimmten Reihenfolge zurückgegeben.
am häufigsten(n)
Diese Methode gibt die häufigsten Elemente aus dem Zähler zurück. Wenn wir keinen Wert für 'n' angeben, wird ein sortiertes Wörterbuch von den häufigsten zu den am wenigsten häufigen Elementen zurückgegeben. Wir können Slicing verwenden, um die am wenigsten häufigen Elemente aus 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() wird verwendet, um Elementanzahlen von einem anderen Zähler abzuziehen. Die Methode update() wird verwendet, um Zählerwerte 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 Zählerarithmetikoperationen
Wir können auch einige arithmetische Operationen mit Zählern durchführen, genau wie mit Zahlen. Allerdings werden bei diesen Operationen nur Elemente mit positivem Zähler zurückgegeben.
arithmetic operations
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 mit dem Python Counter
Lassen Sie uns einige Code-Snippets für verschiedene Operationen ansehen, die wir mit Counter-Objekten durchführen können.
counter = Counter({'a': 3, 'b': 3, 'c': 0})
miscellaneous examples
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)])
remove 0 or negative count elements
counter = Counter(a=2, b=3, c=-1, d=0)
counter = +counter
print(counter) # Counter({'b': 3, 'a': 2})
clear all elements
counter.clear()
print(counter) # Counter()
Das ist alles zur Python Counter-Klasse.
Sie können den vollständigen Beispielcode von meinem GitHub-Repository herunterladen.
Referenz: Python-Dokumentation
