collections.Counter

Słownik do zliczania: dla każdego elementu przechowuje liczbę jego wystąpień.

Zwraca
Obiekt Counter, czyli słownik z liczbami wystąpień.
Na tej stronie

Przykład

#
Python
from collections import Counter

answers = ["B", "A", "B", "C", "B", "A"]
counts = Counter(answers)

print(counts)
print(counts["B"], counts["D"])
print(counts.most_common(1))
Wynikzapisany wynik, możesz go sprawdzić
Counter({'B': 3, 'A': 2, 'C': 1})
3 0
[('B', 3)]

Definicja i zastosowanie

#

Klasa Counter z modułu collections zlicza elementy kolekcji w jednym kroku. Counter(["a", "b", "a"]) tworzy słownik, w którym kluczami są elementy, a wartościami liczba ich wystąpień. Działa z listami, napisami (liczy znaki) i każdą inną kolekcją.

Metoda most_common(n) zwraca listę n najczęstszych elementów razem z liczbą wystąpień, posortowaną od największej. Odczyt brakującego klucza zwraca 0 zamiast zgłaszać KeyError, więc nie trzeba niczego sprawdzać przed zwiększaniem licznika.

Counter jest podklasą dict, więc działa na nim wszystko, co znasz ze słowników. Dodatkowo liczniki można dodawać i odejmować operatorami + i -, a metoda update() dolicza nowe wystąpienia zamiast zastępować wartości. Sumę wszystkich liczników zwraca total().

Składnia

#
Składnia
from collections import Counter

Counter(iterable)
licznik.most_common(n)
licznik.update(iterable)
licznik.total()

Parametry

#
  • iterable

    kolekcja lub słownik, opcjonalny

    Elementy do policzenia albo słownik z gotowymi licznikami.

Więcej przykładów

#
Najczęstsze słowa w tekście
Python
from collections import Counter

text = "python jest prosty i python jest popularny"
words = Counter(text.split())

for word, count in words.most_common(2):
    print(word, count)

print(Counter("banan"))
Wynikzapisany wynik, możesz go sprawdzić
python 2
jest 2
Counter({'a': 2, 'n': 2, 'b': 1})
Dodawanie i aktualizacja liczników
Python
from collections import Counter

week1 = Counter(html=3, python=1)
week2 = Counter(python=4, css=2)

print(week1 + week2)

week1.update(["html", "css"])
print(week1)
print(week1.total())
Wynikzapisany wynik, możesz go sprawdzić
Counter({'python': 5, 'html': 3, 'css': 2})
Counter({'html': 4, 'python': 1, 'css': 1})
6

Dobre praktyki

#
  • Odczyt brakującego klucza zwraca 0, ale nie dodaje go do licznika. Dlatego counts[x] += 1 działa bez wcześniejszego sprawdzania klucza.
  • update() w Counter dodaje liczniki, a nie zastępuje ich jak w zwykłym słowniku.
  • Przy remisie most_common() zachowuje kolejność, w jakiej elementy pojawiły się po raz pierwszy.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.