[Python] Nicht nur Sammlungen zählen

Überblick

Ich habe die Art von collection.Counter zusammengefasst, die die Anzahl der Elemente von iterable ermittelt. Neben dem Zählen hat es andere nützliche Eigenschaften, die dikt nicht hat, deshalb möchte ich es aktiv nutzen.

Berechnung

Addition / Subtraktion und Mengenberechnung sind möglich. Schlüssel, deren Wert kleiner oder gleich Null ist, werden automatisch gelöscht.

from collections import Counter

A = Counter('ab') # Counter({'a': 1, 'b': 1})
B = Counter('bc') # Counter({'c': 1, 'b': 1})
A + B # Counter({'b': 2, 'a': 1, 'c': 1})
A - B # Counter({'a': 1})
A & B # Counter({'b': 1})
A | B # Counter({'a': 1, 'b': 1, 'c': 1})

Methode

Im Gegensatz zu Operatoren bleiben auch Schlüssel mit Werten kleiner oder gleich Null erhalten. elements gibt nur Schlüssel mit positiven Werten zurück.

from collections import Counter

A = Counter('ab')
B = Counter('bc')
C = Counter('ac')
C.update(A) # Counter({'a': 2, 'c': 1, 'b': 1})
A.subtract(B) # Counter({'a': 1, 'b': 0, 'c': -1})
A.most_common() # [('a', 1), ('b', 0), ('c', -1)]
sorted(C.elements()) # ['a', 'a', 'b', 'c']
sorted(A.elements()) # ['a']

Referenz

Wenn Sie das Element direkt ändern, ist der Wert unter Null wie in der Methode zulässig. Verweise auf nicht vorhandene Elemente geben ausnahmslos 0 zurück.

from collections import Counter

A = Counter('ab')
A['a'] += 2 # Counter({'a': 3, 'b': 1})
a['b'] -= 2 # Counter({'a': 3, 'b': -1})
A['c'] # 0

Beachten Sie, dass der Operator für einzelne Begriffe eine Verknüpfung für Operationen auf dem leeren "Counter ()" ist. Nach der Berechnung für jedes Element können nur positive oder negative Werte extrahiert werden.

A # Counter({'a': 3, 'b': -1})
+A # Counter({'a': 3})
-A # Counter({'b': 1})

Recommended Posts

[Python] Nicht nur Sammlungen zählen
Python nicht implementiert Fehler
Inklusive Notation, nicht nur eine Liste
Liste mit Sammlungen hochzählen
Python-Runde ist nicht streng rund
Filter 404 nicht in Rollbar Python gefunden
Hat sich nicht von Python 2 auf 3 geändert
Python gibt keine Fehler oder Ausgaben aus, nur weil der Einzug falsch ausgerichtet ist