Menu Close

Python 计数器

什么是Python计数器?

Python计数器是一个容器,将保存容器中存在的每个元素的计数。计数器是词典类中可用的子类。

计数器是词典类中可用的子类。使用Python计数器工具,您可以计算对象(也称为哈希表对象)中的键/值对。

为什么要使用Python Counter?

这里是使用Python 3 Counter的主要原因:

  • 计数器将数据保存在无序集合中,就像哈希表对象一样。此处的元素将键和计数表示为值。
  • 它允许您计算可迭代列表中的项目。
  • 可以轻松地在Counter上执行算术运算(例如加法,减法,相交和联合)。
  • 一个Counter也可以计算另一个Counter中的元素

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

  • 什么是Python计数器?
  • 为什么要使用Python Counter?
  • Python计数器简介
  • 字符串计数器
  • list计数器
  • 字典计数器
  • 元组计数器
  • 访问,初始化和更新计数器
  • 从计数器删除元素
  • Python计数器上的算术运算
  • Python Counter上可用的方法
  • 在Python中重新分配计数
  • 使用计数器获取并设置元素数

Python计数器简介

Python Counter接受输入列表,元组,字典,字符串,这些都是可迭代的对象,并且它将为您提供输出,其中包含每个元素的计数。

语法:

Counter(list)

考虑您有以下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))

Output:

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

字符串计数器

在Python中,一切都是对象,字符串也是对象。Python字符串可以简单地通过将字符括在双引号中来创建。Python不支持字符类型。这些被视为长度为一的字符串,也被视为子字符串。

在下面的示例中,一个字符串被传递给Counter。它返回字典格式,带有键/值对,其中键是元素,值是计数。它还将空格视为元素,并给出字符串中空格的数量。

Example:

from collections import Counter
my_str = "Welcome to icfedu.cn"
print(Counter(my_str))

Output:

Counter({'e': 3, 'c': 3, 'o': 2, ' ': 2, 'W': 1, 'l': 1, 'm': 1, 't': 1, 'i': 1, 'f': 1, 'd': 1, 'u': 1, '.': 1, 'n': 1})

list计数器

列表是一个可迭代的对象,其元素放在方括号内。

列表中的元素在提供给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))

Output:

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

Output:

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

元组计数器

元组是用圆括号括起来的对象的集合。Counter将为您提供给定元组中每个元素的计数。

一旦将元组提供给Counter,它将被转换为哈希表对象,其中的元素将成为键,而值将是给定元组中元素的计数。

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

Output:

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

访问,初始化和更新计数器

初始化计数器

可以通过传递字符串值,列表,字典或元组来初始化Counter,如下所示:

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 icfedu.cn')

全部代码:

from collections import Counter
_count = Counter()
_count.update('Welcome to icfedu.cn')
print(_count)

output:

Counter({'e': 3, 'c': 3, 'o': 2, ' ': 2, 'W': 1, 'l': 1, 'm': 1, 't': 1, 'i': 1, 'f': 1, 'd': 1, 'u': 1, '.': 1, 'n': 1})

访问计数器

要从计数器获取值,可以执行以下操作:

from collections import Counter

_count = Counter()
_count.update('Welcome to icfedu.cn')
print('%s : %d' % ('u', _count['u']))
print('\n')
for char in 'icf':
    print('%s : %d' % (char, _count[char]))

Output:

u : 1

i : 1
c : 3
f : 1

从计数器删除元素

要从Counter中删除元素,可以使用del,如下例所示:

Example:

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

Output:

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

Python计数器上的算术运算

可以在计数器上完成算术运算(例如加法,减法,交集和并集),如下例所示:

Example:

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

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

#加法
counter3 = counter1 + counter2 

print(counter3)

#减法
counter4 = counter1 - counter2 

print(counter4)

#获取公共最小值
counter5 = counter1 & counter2 

print(counter5)

#获取共有部分最大值
counter6 = counter1 | counter2 

print(counter6)

Output:

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有一些重要的方法,下面是相同的列表:

  • elements():此方法将返回所有count> 0的元素。计数为0或-1的元素将不返回。
  • most_common(value):此方法用来获取最大的n个数,value不传表示获取所有
  • subtract():此方法用于从另一个Counter 中做减法运算
  • update(): 更新的关键字已存在,则对它的值进行求和;如果不存在,则添加

示例:elements()

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

_elements = counter1.elements() # 获取大于0的元素
for a in _elements:
    print(a)

Output:

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) #获取最大的2个数
print(common_element)

common_element1 = counter1.most_common() 
print(common_element1)

Output:

 [('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)

Output:

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)

Output:

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)

output:执行后,您会看到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']) #

Output:

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)

Output:

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

概括:

  • 计数器是一个容器,它将保存容器中存在的每个元素的计数。
  • 计数器是词典类中可用的子类。
  • 使用Python计数器工具,您可以计算对象(也称为哈希表对象)中的键/值对。
  • 计数器将数据保存在无序集合中,就像哈希表对象一样。此处的元素将键和计数表示为值。
  • 它允许您计算可迭代列表中的项目。
  • 可以轻松地在Counter上执行算术运算(例如加法,减法)。
  • 计数器还可以对另一个计数器中的元素进行计数。
  • 计数器上可用的重要方法是elements(),most_common(value),sutract()和update()。
  • 计数器可用于字符串,列表,字典和元组。
Posted in Python

发表评论

相关链接