Python Counter – Python Collections Counter

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 Dict-Schlüssel und ihre Anzahl als Dict-Wert gespeichert werden. Die Anzahl 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 wir auch andere Objekte speichern.

Erstellen eines Python Counter-Objekts

Wir können einen leeren Counter erstellen oder 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 jedes Iterable als Argument zur Erstellung eines Counter-Objekts verwenden. Daher können auch Zeichenkettenliterale und Listen zur Erstellung eines Counter-Objekts verwendet werden.

# 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 die Anzahlwerte verwenden, aber das würde dem Zweck der Counter-Klasse widersprechen.

# Counter works with non-numbers too
special_counter = Counter(name='Pankaj', age=20)
print(special_counter)  # Counter({'name': 'Pankaj', 'age': 20})

Python Counter-Methoden

Zählen von Elementen

# 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 erhalten, wird 0 zurückgegeben und kein KeyError ausgelöst.

# getting count for non existing key, don't cause KeyError
print(counter['Unicorn'])  # 0

Anzahl der Elemente festlegen

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 Counter 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 Counter zurück. Es werden nur Elemente mit positiver Anzahl 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 „Dog“ zweimal ausgeben, weil dessen Anzahl 2 ist. Andere Elemente werden ignoriert, da sie keine positive Anzahl haben. Counter ist eine ungeordnete Sammlung, daher werden die Elemente in keiner bestimmten Reihenfolge zurückgegeben.

most_common(n)

Diese Methode gibt die häufigsten Elemente aus dem Counter zurück. Wenn wir keinen Wert für „n“ angeben, wird ein sortiertes Wörterbuch von den häufigsten bis zu den am wenigsten häufigen Elementen zurückgegeben. Wir können Slicing verwenden, um die am wenigsten häufigen 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 subtract()-Methode von Counter wird verwendet, um Elementanzahlen von einem anderen Counter abzuziehen. Die update()-Methode wird verwendet, um Anzahlen von einem anderen Counter 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 Arithmetic Operations

Wir können einige Arithmetic Operations mit Countern durchführen, genau wie mit Zahlen. Es werden jedoch nur Elemente mit positiver Anzahl mit diesen Operationen 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 auf Python Counter

Lassen Sie uns einige Code-Schnipsel für verschiedene Operationen betrachten, die wir auf 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 für die Python Counter-Klasse.

Kostenlosen Account erstellen

Registrieren Sie sich jetzt und erhalten Sie Zugang zu unseren Cloud Produkten.

Das könnte Sie auch interessieren: