python之collections.Counter函数介绍

2024-04-18 1055阅读

        collections.Counter 是 Python 标准库中的一个内置类,用于计数可哈希对象(例如列表、字符串等)的出现次数。它提供了一种方便且高效的方式来进行计数操作。下面是对 collections.Counter 的介绍。

python之collections.Counter函数介绍
(图片来源网络,侵删)

1. 创建 Counter 对象

        可以通过传递可迭代对象(如列表、字符串等)给 Counter 类来创建一个计数器对象。

        也可以使用大括号 {} 和键值对的形式来创建一个计数器对象。

示例:

from collections import Counter
# 通过可迭代对象创建计数器对象
my_list = [1, 2, 3, 1, 2, 1, 3, 4]
counter1 = Counter(my_list)
print(counter1)
# 使用键值对创建计数器对象
counter2 = Counter({'a': 3, 'b': 2, 'c': 1})
print(counter2)

输出:

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

2. 计数器操作

        Counter 对象具有类似字典的操作方式,并提供了一些额外的方法。

                可以使用索引操作符 [key] 获取指定键的计数值。

                可以使用 elements() 方法获取计数器中的所有元素。

                可以使用 most_common([n]) 方法获取计数器中出现次数最多的前 n 个元素。

示例:

from collections import Counter
my_list = [1, 2, 3, 1, 2, 1, 3, 4]
counter = Counter(my_list)
print(counter[1])  # 获取键 1 的计数值
print(list(counter.elements()))  # 获取计数器中的所有元素
print(counter.most_common(2))  # 获取出现次数最多的前 2 个元素

输出:

3
[1, 1, 1, 2, 2, 3, 3, 4]
[(1, 3), (2, 2)]

 3. 计数器的其他操作方法

        Counter 类还提供了其他一些操作方法,例如 update()、subtract()、clear() 等,用于更新计数器、减少计数器中的元素,以及清空计数器。

示例:

from collections import Counter
counter = Counter(a=3, b=2, c=1)
print(counter)
counter.update({'a': 2, 'b': 1, 'd': 4})  # 更新计数器
print(counter)
counter.subtract({'a': 1, 'b': 2, 'c': 3})  # 减少计数器中的元素
print(counter)
counter.clear()  # 清空计数器
print(counter)

输出:

Counter({'a': 3, 'b': 2, 'c': 1})
Counter({'d': 4, 'a': 5, 'b': 3, 'c': 1})
Counter({'a': 4, 'b': 1, 'd': 4, 'c': -2})
Counter()

 4. 总结

        总结来说,collections.Counter 提供了一种方便且高效的计数操作,用于计算可哈希对象的出现次数。它可以通过传递可迭代对象或使用键值对的形式来创建计数器对象,支持类似字典的操作方式,并提供了额外的方法来获取元素的计数值、获取所有元素和获取出现次数最多的元素。此外,计数器对象还支持更新、减少和清空操作。

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]