Этот блог предназначен для тех, кто хочет исследовать в Python не только типы данных dict, list, set и tuple.
Начнем с Counter Class.
Встречный класс
Counter — это подкласс dict для подсчета объектов, которые можно хешировать.
Объект можно хэшировать, если он имеет значение хеш-функции. Пример, приведенный ниже, возвращает хешированное значение с использованием хеш-функции. Здесь важно отметить, что возврат хеш-функции имеет значение только для неизменяемых объектов.
//Print hash value of the given tuple var = ('G','E','E','K') print(hash(var)) Output: -6905685582816192954 //Output is called as hash value
Возвращаясь к сути,
Счетчик можно определить как коллекцию, в которой элементы хранятся как ключи словаря, а их счетчики хранятся как значения словаря
from collections import Counter counter = Counter(['a', 'b', 'b', 'c', 'c', 'c', 'd', 'd', 'd', 'd']) print(counter) Output: Counter({'d': 4, 'c': 3, 'b': 2, 'a': 1})
В приведенном выше примере мы видим, что счетчики отображаются вместе с ключами с использованием класса счетчика.
Дополнительные методы объектов счетчика
Объекты счетчика поддерживают все методы, поддерживаемые словарем изменяемой структуры данных. Наряду с этим существуют дополнительные методы, поддерживаемые объектами счетчиков, как указано ниже.
total() – Сумма элементов
from collections import Counter counter = Counter(['a', 'b', 'b', 'c', 'c', 'c', 'd', 'd', 'd', 'd']) print(counter) print(counter.total()) Output: Counter({'d': 4, 'c': 3, 'b': 2, 'a': 1}) 10
most_common([n]) — список из n (данное число) общих элементов
from collections import Counter print(Counter('abbcccdddd').most_common(3)) Output: [('d', 4), ('c', 3), ('b', 2)] //b, c and d are most common elements since frequency is more than a
elements() — для перебора элементов
from collections import Counter c = Counter(a=1, b=2, c=3, d=4) for i in c.elements(): print(i, end = ' ') Output: a b b c c c d d d d //If count of element is < 1 or negative then it will be ignored
subtract() — вычитание элементов
from collections import Counter first = Counter(a=1, b=2, c=3, d=4) second = Counter(a=0, b=1, c=2, d=3) first.subtract(second) print(first) Output: Counter({'a': 1, 'b': 1, 'c': 1, 'd': 1})
Математические операции
from collections import Counter first = Counter(a=1, b=2, c=3, d=4) second = Counter(a=0, b=1, c=2, d=3) print(first + second) #Addition print(first - second) #Subtraction print(first == second) #Equal print(first <= second) #Inclusion print(first & second) #Intersection print(first | second) #Union
Унарные операции
from collections import Counter first = Counter(a=1, b=-2, c=3, d=-4) print(+first) print(-first) Output: Counter({'c': 3, 'a': 1}) Counter({'d': 4, 'b': 2})
Помимо класса Counter, в модуле коллекций есть много других типов данных, таких как ChainMap, OrderedDict, ChainMap и т. д.
Все эти типы данных полезны для сложных требований программирования, и рекомендуется использовать их, когда это возможно.
Спасибо.