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

⚡ Розумний підсумок

Python Counter — це підклас словника з модуля колекцій, який підраховує, як часто кожен елемент з'являється в ітерованому об'єкті. Він приймає рядки, списки, кортежі та словники, а також підтримує арифметичні операції, операції most_common та оновлення для швидкого підрахунку.

  • 🔢 Підрахунок: Функція Counter підраховує кількість входжень кожного елемента та повертає їх як пари ключ-лічильник.
  • 📥 Будь-який ітерований елемент: Він приймає рядки, списки, кортежі та словники як вхідні дані.
  • Арифметика: Лічильники підтримують додавання та підсумокtracоперації з'єднання, перетину та об'єднання.
  • 🏆 найпоширеніший(): Цей метод повертає елементи з найвищою частотою в ранжованому порядку.
  • 🔄 Оновлення: оновлення() та підпрограмиtract() коригує підрахунки з іншого лічильника або ітерованого об'єкта.
  • 🤖 Допомога ШІ: Асистенти штучного інтелекту генерують код лічильника та пропонують його для завдань частоти та підрахунку слів.

Python Лічильник у колекціях

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

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

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

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

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

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

Введення в 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

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

приклад:

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(значення): Цей метод поверне вам найпоширеніші елементи зі списку лічильників.
  • нижчеtracт(): Цей метод використовується для вирахування елементів з іншого лічильника.
  • оновлення(): Цей метод використовується для оновлення елементів з іншого лічильника.

Приклад: 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)]

Приклад: підрядникtracт()

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})

Поширені запитання

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

most_common(n) повертає n елементів з найбільшою кількістю у вигляді кортежів (element, count), упорядкованих від найбільш частого до найменш частого. Виклик без аргументу повертає кожен елемент, відсортований за кількістю.

нижчеtract() зберігає нульові та від'ємні значення після віднімання та змінює лічильник на місце. Оператор мінус повертає новий лічильник та відкидає будь-який елемент, результат якого дорівнює нулю або від'ємному значенню.

Так. Спочатку розділіть текст, наприклад, Counter(sentence.split()), щоб підрахувати цілі слова. Передавання необробленого рядка підраховує окремі символи, включаючи пробіли, а не слова.

Використовуйте sum(counter.values()) для додавання всіх підрахунків або Counter.total() у Python 3.10 та пізніших версій. Це показує загальну кількість елементів, підрахованих лічильником.

Лічильник перевизначає __missing__, тому будь-який відсутній елемент повертає лічильник, що дорівнює 0. Це дозволяє безпечно збільшувати нові ключі та запитувати елементи, не перевіряючи їхню наявність попередньо.

Асистенти ШІ генерують код лічильника для частотного аналізу, рекомендують використовувати лічильник замість ручних циклів та пояснюють такі методи, як most_common та elements. Вони також перетворюють логіку підрахунку на чистіший та швидший код на основі колекцій.

Так. GitHub Copilot автоматично доповнює шаблони Counter, defaultdict та OrderedDict з коментаря, що описує вашу мету. Інструменти штучного інтелекту Agentic рефакторують цикли ручного підрахунку у виклики Counter та додають тести по всьому файлу.

Підсумуйте цей пост за допомогою: