集合中的 Python 计数器示例
什么是 Python 计数器?
Python Counter 是一个容器,它将保存容器中存在的每个元素的计数。计数器是字典类中的一个子类。
计数器是字典类中可用的子类。使用 Python Counter 工具,可以统计对象中的键值对,也称为哈希表对象。
为什么要使用 Python 计数器?
以下是使用 Python 3 Counter 的主要原因:
- 计数器将数据保存在无序集合中,就像哈希表对象一样。这里的元素将键和计数表示为值。
- 它允许您计算可迭代列表中的项目。
- 可以在计数器上轻松执行加法、减法、交集和并集等算术运算。
- 一个计数器也可以计算来自另一个计数器的元素
在本 Python 教程中,您将学习:
- 什么是 Python 计数器?
- 为什么要使用 Python 计数器?
- Python 计数器介绍
- 带字符串的计数器
- 带列表的计数器
- 带字典的计数器
- 元组计数器
- 访问、初始化和更新计数器
- 从计数器中删除元素
- Python Counter 上的算术运算
- Python 计数器上可用的方法
- 在 Python 中重新分配计数
- 使用 Counter 获取和设置元素的数量
Python 计数器简介
Python Counter 接受输入一个列表、元组、字典、字符串,这些都是可迭代的对象,它会给你输出,其中包含每个元素的计数。
语法:
Counter(list)
假设您有以下列表:
list1 = ['x','y','z','x','x','x','y', 'z']
该列表包含元素 x 、 y 和 z。当您在此列表上使用 Counter 时,它将计算 x 、 y 和 z 出现的次数。如果在 list1 上使用 counter,则输出应类似于:
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})
带字符串的计数器
在 Python 中,一切都是对象,字符串也是对象。可以简单地通过将字符括在双引号中来创建 Python 字符串。 Python 不支持字符类型。这些被视为长度为 1 的字符串,也被视为子字符串。
在下面的示例中,将一个字符串传递给 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})
带列表的计数器
列表是一个可迭代对象,其元素位于方括号内。
列表中的元素在提供给 Counter 时将被转换为哈希表对象,其中元素将成为键,值将是给定列表中元素的计数。
例如 ['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})
元组计数器
元组是由圆括号内的逗号分隔的对象的集合。 Counter 将为您提供给定元组中每个元素的计数。
一旦将元组提供给计数器,它将被转换为哈希表对象,其中元素将成为键,值将是给定元组中元素的计数。
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
也可以初始化一个空的Counter,如下图:
from collections import Counter _count = Counter()
更新计数器
您可以使用 update() 方法向 Counter 中添加值。
_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})
访问计数器
要从 Counter 中获取值,您可以执行以下操作:
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 有一些重要的方法可用,这里是相同的列表:
- 元素() :此方法将返回所有计数> 0 的元素。不会返回计数为 0 或 -1 的元素。
- 最常见的(值): 此方法将返回 Counter 列表中最常见的元素。
- 减法(): 此方法用于从另一个 Counter 中扣除元素。
- 更新(): 此方法用于从另一个 Counter 更新元素。
示例:元素()
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(value)
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)]
例子:减法()
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 中重新分配计数
您可以重新分配 Counter 的计数,如下所示:
假设你有一个字典:{'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 获取和设置 Elements 的计数
要使用 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 是一个容器,用于保存容器中存在的每个元素的计数。
- Counter 是字典类中的一个子类。
- 使用 Python Counter 工具,您可以计算对象(也称为哈希表对象)中的键值对。
- 计数器将数据保存在无序集合中,就像哈希表对象一样。这里的元素将键和计数表示为值。
- 它允许您计算可迭代列表中的项目。
- 可以在计数器上轻松执行加法、减法、交集和并集等算术运算。
- 一个计数器也可以计算来自另一个计数器的元素。
- Counter 上可用的重要方法是 elements()、most_common(value)、subtract() 和 update()。
- 计数器可用于字符串、列表、字典和元组。
Python