亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> Python

集合中的 Python 计数器示例

什么是 Python 计数器?

Python Counter 是一个容器,它将保存容器中存在的每个元素的计数。计数器是字典类中的一个子类。

计数器是字典类中可用的子类。使用 Python Counter 工具,可以统计对象中的键值对,也称为哈希表对象。

为什么要使用 Python 计数器?

以下是使用 Python 3 Counter 的主要原因:

在本 Python 教程中,您将学习:

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 有一些重要的方法可用,这里是相同的列表:

示例:元素()

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

总结:


Python

  1. Python Print() 语句:如何通过示例打印
  2. Python String strip() 函数与示例
  3. 带有示例的 Python 字符串计数()
  4. Python String format() 举例说明
  5. Python 字符串长度 | len() 方法示例
  6. Python String find() 方法及示例
  7. 带有示例的 Python Lambda 函数
  8. 带有示例的 Python round() 函数
  9. 带有示例的 Python map() 函数
  10. Python Timeit() 与示例
  11. 带有示例的 Python 列表计数()
  12. Python 列表 index() 与示例