简介
Python中的collections
模块提供了许多高效的数据类型,这些数据类型不是Python内置的数据类型,但是它们是Python语言的重要组成部分,能够提高性能与简化代码。其中一个特别常用的数据类型是counter
,它可以方便地帮助我们计算对象列表中每个元素出现的次数。
counter
被设计用来统计数据,跟踪值的出现次数。它是无序的、可变的、容器型数据类型。它会把每个元素与一个计数值重复,而计数值就是该元素在容器中出现的次数。
使用方法
导入模块
我们需要先导入collections
模块,代码如下:
from collections import Counter
创建Counter对象
创建一个Counter
对象,将目标列表(list)、元组(tuple)、字符串(str)、字典(dict)或其他可哈希对象作为参数传入即可。如下所示:
统计一个列表元素出现的次数
list1 = ["a", "b", "c", "a", "b", "a"]
counter1 = Counter(list1)
print(counter1)
输出结果:
Counter({'a': 3, 'b': 2, 'c': 1})
统计一个字符串中每个字符出现的次数
str1 = "mississippi"
counter2 = Counter(str1)
print(counter2)
输出结果:
Counter({'i': 4, 's': 4, 'p': 2, 'm': 1})
统计一个字典中键出现的次数
dict1 = {'apple': 3, 'banana': 2, 'orange': 4, 'pear': 1}
counter3 = Counter(dict1)
print(counter3)
输出结果:
Counter({'orange': 4, 'apple': 3, 'banana': 2, 'pear': 1})
访问元素和计数值
可以按照字典的方式去取值,或者通过方法elements()
访问每个元素,通过values()
方法访问每个元素出现的次数。
list1 = ["a", "b", "c", "a", "b", "a"]
counter = Counter(list1)
print(counter['a']) # 输出 3
print(list(counter.elements())) # 输出 ['a', 'a', 'a', 'b', 'b', 'c']
print(list(counter.values())) # 输出 [3, 2, 1]
更新计数器
counter
的计数器值可以通过更新操作来修改。
counter4 = Counter({'red': 6, 'blue': 1})
counter4.update({'green': 3, 'red': 2})
print(counter4)
输出结果:
Counter({'red': 8, 'green': 3, 'blue': 1})
从上面的例子中可以看出,green
首次出现在counter4
里,所以计数器为3,而red
已经有6个计数器,更新操作中将它增加了2,所以最终计数器为8。
删除元素
可以使用del
关键字删除元素计数器。
counter5 = Counter({'red': 6, 'blue': 1, 'green': 3})
del counter5['green'] # 删除元素‘green’
print(counter5)
输出结果:
Counter({'red': 6, 'blue': 1})
应用实例
Case 1:计算一个列表的元素出现次数
以下代码演示了如何计算一个列表的元素出现次数。
from collections import Counter
lst = ['apple', 'banana', 'orange', 'apple', 'pear', 'orange', 'orange', 'banana', 'banana']
counter = Counter(lst)
print(counter)
输出结果:
Counter({'orange': 3, 'banana': 3, 'apple': 2, 'pear': 1})
Case 2:计算一个文件中各个单词的出现次数
以下代码演示了如何计算一个文件中各个单词的出现次数。
from collections import Counter
with open('test.txt') as f:
words = f.read().split()
counter = Counter(words)
print(counter)
这段代码假设当前目录下存在名为test.txt
的文件,并且其包含了一些单词。代码通过打开文件,读取里面的内容,利用空格进行分词,生成单词列表,并通过Counter
对象生成计数器,然后打印结果。
总结
collections
模块中的counter
数据类型是一个十分实用的工具,它可以帮助我们快速地统计数据,并且接口简单易懂。通过这篇攻略,我们应该了解如何基本使用counter
数据类型并做到轻轻松松计算对象的数量。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:简单掌握Python的Collections模块中counter结构的用法 - Python技术站