Ce face collections.Counter
Counter(colectie) parcurge colecția și creează un dicționar {valoare: număr_de_apariții}. Pentru o cheie care lipsește returnează 0, nu KeyError. Cele mai frecvente valori se obțin cu most_common().
update() adună numărători noi, subtract() le scade (rezultatele pot deveni negative sau zero), total() (Python 3.10+) dă suma tuturor numărătorilor, iar elements() produce fiecare element de atâtea ori cât îi este numărul. copy() creează o copie. Counter.fromkeys() există doar moștenită și aruncă NotImplementedError.
Counter-ele se pot aduna (+), scădea (-, păstrează doar valorile pozitive), intersecta (&, minimul) și reuni (|, maximul).
Parametri
| Parametru | Descriere |
|---|---|
iterabil / mapping / **kwds |
Elementele numărate, sau numărători date direct. |
Ce returnează
Un obiect Counter (subclasă a lui dict).
Exemple
Exemplul 1: Numărarea cuvintelor
from collections import Counter
text = "ana are mere ana are pere și ana are prune"
c = Counter(text.split())
print(c)
print(c["ana"], c["banane"])
print(c.total(), len(c))
Rezultat
Counter({'ana': 3, 'are': 3, 'mere': 1, 'pere': 1, 'și': 1, 'prune': 1})
3 0
10 6
Exemplul 2: update, subtract și elements
from collections import Counter
stoc = Counter(mere=5, pere=2)
stoc.update({"mere": 3, "prune": 4})
stoc.subtract(pere=2, prune=1)
print(stoc)
print(sorted(stoc.elements())[:6])
copie = stoc.copy()
print(copie == stoc)
try:
Counter.fromkeys("abc")
except NotImplementedError as e:
print("fromkeys:", e)
Rezultat
Counter({'mere': 8, 'prune': 3, 'pere': 0})
['mere', 'mere', 'mere', 'mere', 'mere', 'mere']
True
fromkeys: Counter.fromkeys() is undefined. Use Counter(iterable) instead.
Exemplul 3: Operații între Counter-e
from collections import Counter
a = Counter("aabbbc")
b = Counter("abccd")
print(a + b)
print(a - b)
print(a & b)
print(a | b)
Rezultat
Counter({'b': 4, 'a': 3, 'c': 3, 'd': 1})
Counter({'b': 2, 'a': 1})
Counter({'a': 1, 'b': 1, 'c': 1})
Counter({'b': 3, 'a': 2, 'c': 2, 'd': 1})
Greșeli frecvente
- Te aștepți ca
subtract()să șteargă cheile ajunse la zero. Ele rămân, cu valoarea 0 sau negativă; operatorul-le elimină.
Comenzi înrudite
Counter.most_common(): Returnează cele mai frecvente valori dintr-un Counter, în ordine descrescătoare.dict.get(): Citește valoarea unei chei; dacă cheia lipsește, returnează o valoare implicită în loc de eroare.collections.defaultdict: Un dicționar care creează automat o valoare implicită pentru cheile lipsă.list.count() și tuple.count(): Numără de câte ori apare o valoare într-o listă sau într-un tuplu.