详解Python Counter对象的求和计算

  • Post category:Python

Python Counter对象是Python语言内置的一个常用数据结构。Counter对象可以接受任意序列为参数,并返回序列中各个元素在序列中出现次数的计数值。我们可以通过Counter对象方便地进行统计和分析。

以下是使用Counter对象求和计算的完整攻略:

1. 导入Counter模块

要使用Counter对象,首先需要导入collections模块中的Counter类:

from collections import Counter

2. 创建Counter对象

创建一个Counter对象,我们可以使用以下方式:

c = Counter(['a', 'b', 'c', 'a', 'b', 'b'])

上述代码中,我们使用了一个列表作为参数来初始化Counter对象。Counter对象会对列表中出现的元素进行计数,输出结果类似于下面的字典:

Counter({'b': 3, 'a': 2, 'c': 1})

3. 对Counter对象求和

Counter对象中的计数可以通过sum()方法进行求和。比如,下面的例子中,我们可以使用sum()方法对Counter对象中的计数进行求和:

s = sum(c.values())
print(s)

上述代码输出结果为:6,表示列表中的元素总共出现了6次。

4. 对Counter对象中指定元素的计数求和

如果我们只需要计算Counter对象中指定元素的计数,可以先使用items()方法获取Counter对象中的所有计数信息,然后使用列表解析式筛选需要的元素进行求和。例如,下面的例子中,我们只需要计算Counter对象中元素'a''b'的计数和:

s = sum([c[i] for i in ['a', 'b']])
print(s)

上述代码输出结果为:5,表示元素'a''b'在列表中共出现了5次。

示例1:使用Counter对象统计字符串中的单词出现次数

如果我们需要对一个字符串中的单词出现次数进行统计,可以使用Counter对象。例如下面的例子中,我们使用Counter对象统计一个字符串中各个单词出现的次数:

from collections import Counter

s = "I am a good boy. Do you want to be my friend?"
words = s.split()
c = Counter(words)
print(c)

上述代码输出结果类似于下面的字典:

Counter({'I': 1, 'am': 1, 'a': 1, 'good': 1, 'boy.': 1, 'Do': 1, 'you': 1, 'want': 1, 'to': 1, 'be': 1, 'my': 1, 'friend?': 1})

示例2:使用Counter对象统计列表中元素出现次数的前N项

如果我们需要找出一个列表中出现次数最多的前N项,可以使用Counter对象和most_common()方法。例如,下面的例子中,我们使用Counter对象和most_common()方法找出一个列表中出现次数最多的前3个元素:

from collections import Counter

lst = ['a', 'b', 'c', 'a', 'b', 'b', 'd', 'e', 'c', 'c']
c = Counter(lst)
top_n = 3
top_n_list = c.most_common(top_n)
print(top_n_list)

上述代码输出结果类似于下面的列表:

[('b', 3), ('c', 3), ('a', 2)]

说明在列表lst中,元素'b''c'都出现了3次,元素'a'出现了2次。这三个元素是出现次数最多的前3个元素。