Python Лічильник у колекціях із прикладом

Що таке Python Лічильник?

Python Лічильник — це контейнер, який буде зберігати підрахунок кожного з елементів, присутніх у контейнері. Лічильник — це підклас, доступний у класі словника.

Лічильник — це підклас, доступний у класі словника. Використовуючи Python Інструмент лічильника дозволяє підрахувати пари ключ-значення в об’єкті, який також називають об’єктом хеш-таблиці.

Навіщо використовувати Python Лічильник?

Ось основні причини використання Python 3 Лічильник:

  • Лічильник зберігає дані в невпорядкованій колекції, як і об’єкти хеш-таблиці. Елементи тут представляють ключі та кількість як значення.
  • Це дозволяє підраховувати елементи в ітераційному списку.
  • Такі арифметичні операції, як додавання, віднімання, перетин і об’єднання, можна легко виконувати на лічильнику.
  • Лічильник також може рахувати елементи з іншого лічильника

Введення в Python Counter

Python Лічильник приймає на вхід список, кортеж, словник, рядок, які є ітерованими об’єктами, і видає вам вихід, який матиме кількість кожного елемента.

Синтаксис:

Counter(list)

Вважайте, що у вас є такий список:

list1 = ['x','y','z','x','x','x','y', 'z']

Список містить елементи x, y і z. Коли ви використовуєте лічильник у цьому списку, він підраховує, скільки разів присутні x, y і z. Вихід, якщо лічильник використовується в списку1, має виглядати приблизно так:

Counter({'x': 4, 'y': 2, 'z': 2})

Отже, ми маємо кількість x як 4, y як 2 і z як 2.

Щоб використовувати лічильник, нам потрібно спочатку імпортувати його, як показано в наведеному нижче прикладі:

from collections import Counter

Ось простий приклад, який демонструє роботу модуля Counter.

from collections import Counter
list1 = ['x','y','z','x','x','x','y', 'z']
print(Counter(list1))

вихід:

Counter({'x': 4, 'y': 2, 'z': 2})

Лічильник із рядком

In Python, усе є об’єктом, і рядок також є об’єктом. Python рядок можна створити, просто взявши символи в подвійні лапки. Python не підтримує тип символу. Вони розглядаються як рядки довжини один, також розглядаються як підрядки.

У наведеному нижче прикладі рядок передається в лічильник. Він повертає формат словника з парою ключ/значення, де ключ — це елемент, а значення — кількість. Він також розглядає пробіл як елемент і дає кількість пробілів у рядку.

приклад:

from collections import Counter
my_str = "Welcome to Guru99 Tutorials!"
print(Counter(my_str))

вихід:

Counter({'o': 3, ' ': 3, 'u': 3, 'e': 2, 'l': 2, 't': 2, 'r': 2, '9': 2, 'W': 1,
 'c': 1, 'm': 1, 'G': 1, 'T': 1, 'i': 1, 'a': 1, 's': 1, '!': 1})

Лічильник зі списком

Список — це повторюваний об’єкт, елементи якого містяться в квадратних дужках.

Елементи у списку, коли вони передані лічильнику, будуть перетворені на об’єкти хеш-таблиці, де елементи стануть ключами, а значення – кількістю елементів із наданого списку.

Наприклад ['x','y','z','x','x','x','y','z']. Коли ви надасте списку лічильник, він дасть вам кількість кожного елемента в списку.

from collections import Counter
list1 = ['x','y','z','x','x','x','y','z']
print(Counter(list1))

вихід:

Counter({'x': 4, 'y': 2, 'z': 2})

Лічильник зі словником

Словник містить елементи як пару ключ/значення, і вони записуються у фігурних дужках.

Після того, як словник буде передано лічильнику, він буде перетворено в об’єкти хеш-таблиці, де елементи стануть ключами, а значення будуть кількістю елементів із наданого словника.

Наприклад: {'x': 4, 'y': 2, 'z': 2, 'z': 2}. Функція лічильника намагатиметься знайти кількість кожного ключа в заданому словнику.

from collections import Counter
dict1 =  {'x': 4, 'y': 2, 'z': 2, 'z': 2}
print(Counter(dict1))

вихід:

Counter({'x': 4, 'y': 2, 'z': 2})

Лічильник з кортежем

Кортеж — це набір об’єктів, розділених комами в круглих дужках. Лічильник дасть вам кількість кожного з елементів у наданому кортежі.

Після того, як кортеж буде передано лічильнику, він буде перетворений на об’єкт хеш-таблиці, де елементи стануть ключами, а значення будуть кількістю елементів із заданого кортежу.

from collections import Counter
tuple1 = ('x','y','z','x','x','x','y','z')
print(Counter(tuple1))

вихід:

Counter({'x': 4, 'y': 2, 'z': 2})

Доступ, ініціалізація та оновлення лічильників

Ініціалізація лічильника

Лічильник можна ініціалізувати, передаючи значення рядка, список, словник або кортеж, як показано нижче:

from collections import Counter
print(Counter("Welcome to Guru99 Tutorials!"))   #using string
print(Counter(['x','y','z','x','x','x','y', 'z'])) #using list
print(Counter({'x': 4, 'y': 2, 'z': 2})) #using dictionary
print(Counter(('x','y','z','x','x','x','y', 'z'))) #using tuple

Ви також можете ініціалізувати порожній лічильник, як показано нижче:

from collections import Counter
_count = Counter()

Оновлення лічильника

Ви можете додати значення до лічильника за допомогою методу update().

_count.update('Welcome to Guru99 Tutorials!')

Остаточний код:

from collections import Counter
_count = Counter()
_count.update('Welcome to Guru99 Tutorials!')
print(_count)

Вихід:

Counter({'o': 3, ' ': 3, 'u': 3, 'e': 2, 'l': 2, 't': 2, 'r': 2, '9': 2, 'W': 1,
 'c': 1, 'm': 1, 'G': 1, 'T': 1, 'i': 1, 'a': 1, 's': 1, '!': 1})

Доступ до лічильника

Щоб отримати значення з лічильника, ви можете зробити наступне:

from collections import Counter

_count = Counter()
_count.update('Welcome to Guru99 Tutorials!')
print('%s : %d' % ('u', _count['u']))
print('\n')
for char in 'Guru':
    print('%s : %d' % (char, _count[char]))

вихід:

u : 3

G : 1
u : 3
r : 2
u : 3

Видалення елемента з лічильника

Щоб видалити елемент із Counter, ви можете скористатися del , як показано в прикладі нижче:

приклад:

from collections import Counter
dict1 =  {'x': 4, 'y': 2, 'z': 2}
del dict1["x"]
print(Counter(dict1))

вихід:

Counter({'y': 2, 'z': 2})

Арифметична дія на Python Counter

Арифметичні операції, такі як додавання, віднімання, перетин і об’єднання, можна виконувати на лічильнику, як показано в прикладі нижче:

приклад:

from collections import Counter
counter1 =  Counter({'x': 4, 'y': 2, 'z': -2})

counter2 = Counter({'x1': -12, 'y': 5, 'z':4 })

#Addition
counter3 = counter1 + counter2 # only the values that are positive will be returned.

print(counter3)

#Subtraction
counter4 = counter1 - counter2 # all -ve numbers are excluded.For example z will be z = -2-4=-6, since it is -ve value it is not shown in the output

print(counter4)

#Intersection
counter5 = counter1 & counter2 # it will give all common positive minimum values from counter1 and counter2

print(counter5)

#Union
counter6 = counter1 | counter2 # it will give positive max values from counter1 and counter2

print(counter6)

вихід:

Counter({'y': 7, 'x': 4, 'z': 2})
Counter({'x1': 12, 'x': 4})
Counter({'y': 2})
Counter({'y': 5, 'x': 4, 'z': 4})

Методи, доступні на Python Counter

Є кілька важливих методів, доступних у Counter, ось список тих самих:

  • елементи () : цей метод поверне всі елементи з кількістю >0. Елементи з числом 0 або -1 не повертаються.
  • most_common(значення): Цей метод поверне вам найпоширеніші елементи зі списку лічильників.
  • відняти(): Цей метод використовується для вирахування елементів з іншого лічильника.
  • оновлення(): Цей метод використовується для оновлення елементів з іншого лічильника.

Приклад: elements()

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 2, 'z': -2, 'x1':0})

_elements = counter1.elements() # will give you all elements with positive value and count>0
for a in _elements:
    print(a)

вихід:

x
x
x
x
x
y
y

Приклад: most_common(значення)

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})

common_element = counter1.most_common(2) # The dictionary will be sorted as per the most common element first followed by next.
print(common_element)

common_element1 = counter1.most_common() # if the value is not given to most_common , it will sort the dictionary and give the most common elements from the start.The last element will be the least common element.
print(common_element1)

вихід:

 [('y', 12), ('x', 5)]
[('y', 12), ('x', 5), ('x1', 0), ('z', -2)]

Приклад: subtract()

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})
counter2 = Counter({'x': 2, 'y':5})

counter1.subtract(counter2)
print(counter1)

вихід:

Counter({'y': 7, 'x': 3, 'x1': 0, 'z': -2})

Приклад: update()

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})
counter2 = Counter({'x': 2, 'y':5})
counter1.update(counter2)
print(counter1)

вихід:

Counter({'y': 17, 'x': 7, 'x1': 0, 'z': -2})

Перепризначення враховується Python

Ви можете повторно призначити кількість лічильників, як показано нижче:

Вважайте, що у вас є такий словник: {'x': 5, 'y': 12, 'z': -2, 'x1':0}

Ви можете змінити кількість елемента, як показано нижче:

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})

counter1['y'] = 20

print(counter1)

вихід: Після виконання ви побачите, що кількість y змінено з 12 на 20

Counter({'y': 20, 'x': 5, 'x1': 0, 'z': -2})

Отримати та встановити кількість елементів за допомогою лічильника

Щоб отримати кількість елементів за допомогою Counter, ви можете зробити наступне:

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})
print(counter1['y']) # this will give you the count of element 'y'

вихід:

12

Щоб встановити кількість елемента, ви можете зробити наступне:

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})

print(counter1['y'])

counter1['y'] = 20
counter1['y1'] = 10

print(counter1)

вихід:

12
Counter({'y': 20, 'y1': 10, 'x': 5, 'x1': 0, 'z': -2})

Підсумки

  • Лічильник — це контейнер, який буде зберігати підрахунок кожного з елементів, присутніх у контейнері.
  • Лічильник — це підклас, доступний у класі словника.
  • Використання Python Інструмент лічильника дозволяє підрахувати пари ключ-значення в об’єкті, який також називають об’єктом хеш-таблиці.
  • Лічильник зберігає дані в невпорядкованій колекції, як і об’єкти хеш-таблиці. Елементи тут представляють ключі та кількість як значення.
  • Це дозволяє підраховувати елементи в ітераційному списку.
  • Такі арифметичні операції, як додавання, віднімання, перетин і об’єднання, можна легко виконувати на лічильнику.
  • Лічильник також може рахувати елементи з іншого лічильника.
  • Важливими методами, доступними в лічильнику, є elements(), most_common(value), subtract() і update().
  • Лічильник можна використовувати для рядка, списку, словника та кортежу.