Python Брояч в колекции с пример
Какво е Python Брояч?
Python Броячът е контейнер, който ще съдържа броя на всеки от присъстващите елементи в контейнера. Броячът е подклас, наличен в класа на речника.
Броячът е подклас, наличен в класа на речника. С помощта на Python Инструмент за брояч, можете да преброите двойките ключ-стойност в обект, наричан още обект на хеш таблица.
Защо ползване Python Брояч?
Ето основните причини за употреба Python 3 Брояч:
- Броячът съхранява данните в неподредена колекция, точно като обекти с хеш-таблици. Елементите тук представляват ключовете и броя като стойности.
- Позволява ви да преброите елементите в итерируем списък.
- Аритметични операции като събиране, изваждане, пресичане и обединение могат лесно да се извършват на брояч.
- Един брояч може също да брои елементи от друг брояч
Въведение в Python Брояч
Python Броячът приема списък, кортеж, речник, низ, които са итерируеми обекти, и ще ви даде изход, който ще съдържа броя на всеки елемент.
Синтаксис:
Counter(list)
Помислете, че имате следния списък:
list1 = ['x','y','z','x','x','x','y', 'z']
Списъкът има елементи x, y и z. Когато използвате Counter в този списък, той ще преброи колко пъти присъстват x, y и z. Резултатът, ако броячът се използва в списък1, трябва да бъде нещо като:
Counter({'x': 4, 'y': 2, 'z': 2})
Така че имаме броя на x като 4, y като 2 и z като 2.
За да използваме Counter, трябва първо да го импортираме, както е показано в дадения по-долу пример:
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 не поддържа тип знаци. Те се третират като низове с дължина едно, също се считат за подниз.
В примера по-долу низ се предава на Counter. Връща формат на речника с двойка ключ/стойност, където ключът е елементът, а стойността е броят. Той също така разглежда пространството като елемент и дава броя на интервалите в низа.
Пример:
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}. Функцията Counter ще се опита да намери броя на всеки от ключовете в дадения речник.
from collections import Counter dict1 = {'x': 4, 'y': 2, 'z': 2, 'z': 2} print(Counter(dict1))
Изход:
Counter({'x': 4, 'y': 2, 'z': 2})
Брояч с Tuple
Кортежът е колекция от обекти, разделени със запетаи в кръгли скоби. Броячът ще ви даде броя на всеки от елементите в дадения кортеж.
След като кортежът бъде даден на брояча, той ще бъде преобразуван в обект с хеш-таблица, в който елементите ще станат ключове, а стойностите ще бъдат броят на елементите от дадения кортеж.
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 Брояч
Аритметични операции като събиране, изваждане, пресичане и обединение могат да се извършват на брояч, както е показано в примера по-долу:
Пример:
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, ето списъкът с тях:
- елементи() : Този метод ще ви върне всички елементи с брой >0. Елементи с брой 0 или -1 няма да бъдат върнати.
- most_common(стойност): Този метод ще ви върне най-често срещаните елементи от списъка с броячи.
- изваждане (): Този метод се използва за изваждане на елементите от друг брояч.
- актуализация(): Този метод се използва за актуализиране на елементи от друг брояч.
Пример: елементи()
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 count се променя от 12 на 20
Counter({'y': 20, 'x': 5, 'x1': 0, 'z': -2})
Вземете и задайте броя на елементите с помощта на Counter
За да получите броя на елемент с помощта на 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})
Oбобщение
- Броячът е контейнер, който ще съдържа броя на всеки от елементите, присъстващи в контейнера.
- Броячът е подклас, наличен в класа на речника.
- Използване на Python Инструмент за брояч, можете да преброите двойките ключ-стойност в обект, наричан също обект на хеш-таблица.
- Броячът съхранява данните в неподредена колекция, точно като обекти с хеш-таблици. Елементите тук представляват ключовете и броя като стойности.
- Позволява ви да преброите елементите в итерируем списък.
- Аритметични операции като събиране, изваждане, пресичане и обединение могат лесно да се извършват на брояч.
- Един брояч може също да брои елементи от друг брояч.
- Важните методи, налични на брояч, са elements(), most_common(value), subtract() и update().
- Брояч може да се използва за низ, списък, речник и кортеж.