6 collections.Counter

Счетчик является ДИКТ подклассов , что позволяет легко считать объекты. У него есть полезные методы для работы с частотами объектов, которые вы считаете.

 import collections
counts = collections.Counter([1,2,3])

 

Приведенный выше код создает объект count, который имеет частоты всех элементов, передаваемых в конструктор. Этот пример имеет значение Counter({1: 1, 2: 1, 3: 1})

Примеры конструктора

Счетчик писем

 >>> collections.Counter('Happy Birthday')
Counter({'a': 2, 'p': 2, 'y': 2, 'i': 1, 'r': 1, 'B': 1, ' ': 1, 'H': 1, 'd': 1, 'h': 1, 't': 1})

 

Счетчик слов

 >>> collections.Counter('I am Sam Sam I am That Sam-I-am That Sam-I-am! I do not like that Sam-I-am'.split())
Counter({'I': 3, 'Sam': 2, 'Sam-I-am': 2, 'That': 2, 'am': 2, 'do': 1, 'Sam-I-am!': 1, 'that': 1, 'not': 1, 'like': 1})

 

Рецепты

 >>> c = collections.Counter({'a': 4, 'b': 2, 'c': -2, 'd': 0})

 

Получить количество отдельных элементов

 >>> c['a']
4

 

Установить количество отдельных элементов

 >>> c['c'] = -3
>>> c
Counter({'a': 4, 'b': 2, 'd': 0, 'c': -3})

 

Получить общее количество элементов в счетчике (4 + 2 + 0 - 3)

 >>> sum(c.itervalues())  # negative numbers are counted!
3

 

Получить элементы (сохраняются только элементы с положительным счетчиком)

 >>> list(c.elements())
['a', 'a', 'a', 'a', 'b', 'b']

 

Удалить ключи с 0 или отрицательным значением

 >>> c - collections.Counter()
Counter({'a': 4, 'b': 2})

 

Удалить все

 >>> c.clear()
>>> c
Counter()

 

Добавить удалить отдельные элементы

 >>> c.update({'a': 3, 'b':3})
>>> c.update({'a': 2, 'c':2})  # adds to existing, sets if they don't exist
>>> c
Counter({'a': 5, 'b': 3, 'c': 2})
>>> c.subtract({'a': 3, 'b': 3, 'c': 3})  # subtracts (negative values are allowed)
>>> c
Counter({'a': 2, 'b': 0, 'c': -1})