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个元素。