Python Glossary English

все Python 3collectionsпонятие

collections.Counter

counter

Словарь для подсчёта элементов. Методы: most_common(n), elements(), поддерживает +, -, &, |.

Синтаксис

collections.Counter([iterable-or-mapping])

Обращение к отсутствующему ключу возвращает 0 и, в отличие от defaultdict, не создаёт запись — удобно, но опечатка в ключе так и останется незамеченной вместо KeyError. Ещё одна тонкость: оператор вычитания c1 - c2 выбрасывает нулевые и отрицательные счётчики, а метод subtract() их сохраняет, так что из двух способов вычитания отрицательные значения даёт только второй (напрямую их можно и присвоить: c[x] = -1). most_common() сортирует по убыванию, а элементы с одинаковым счётчиком идут в порядке первого появления.

Примеры

from collections import Counter
c = Counter('aabbccca')
print(c)
# → Counter({'a': 3, 'c': 3, 'b': 2})
print(c.most_common(2))
# → [('a', 3), ('c', 3)]
from collections import Counter
c2 = Counter(['apple', 'banana', 'apple', 'cherry', 'apple'])
print(c2.most_common(1))
# → [('apple', 3)]
from collections import Counter
c3 = Counter('hello')
c4 = Counter('world')
print(c3 + c4)
# → Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, 'w': 1, 'r': 1, 'd': 1})
print(c3 - c4)
# → Counter({'h': 1, 'e': 1, 'l': 1}) (только положительные)
print(c3 & c4)
# → Counter({'l': 1, 'o': 1}) (пересечение, min)
print(c3 | c4)
# → Counter({'l': 2, 'h': 1, 'e': 1, 'o': 1, 'w': 1, 'r': 1, 'd': 1}) (объединение, max)
from collections import Counter
words = 'the cat sat on the mat'.split()
wc = Counter(words)
print(wc.most_common(3))
# → [('the', 2), ('cat', 1), ('sat', 1)]

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности