Python编程:集合工具类之计数器(Counter)详解与实践
off999 2024-12-04 14:39 19 浏览 0 评论
前言
本文继续来盘Python内置集合模块,这期主要介绍其中的工具类计数器类(Counter)类的使用。我们还是采用“短平快”的模式——文字+代码,助你多快好省的学会它,并能都收用上它。闲话少叙,开始正文——
@传新视界关于Python集合模块的其它工具类的学习,请查看这里:
Python编程:换种方式用字典之链式映射ChainMap;
Python编程:详解命名元组(namedtuple)的使用要点;
Python编程:详解内置字典(dict)子类及应用(一网打尽);
Python编程:如何搞定生成器(Generator)及表达式?更多内容,请关注@传新视界
Counter
Counter是一个dict子类,用于计数可哈希对象。它是一个集合,其中元素被存储为字典键,它们的计数值被存储为字典值。计数值可为任何整数值,包括零或负计数。Counter类类似于其他语言中的包或多集。
计数的元素来自可迭代对象或另一个初始化的映射(或计数器)。下面是Python中创建Counter对象的一些方式。请看示例代码:
from collections import Counter
# 创建一个空的Counter对象
c1 = Counter()
print(c1)
# 从可迭代对象创建新的Counter对象
c2 = Counter('aabbbcddeeee')
print(c2)
# 从映射创建新的的Counter对象
c3 = Counter({'orange': 6, 'red': 3, 'green': 5})
print(c3)
# 从关键字参数创建Counter对象
c4 = Counter(cats=4, dogs=8)
print(c4)
程序运行结果如下所示:
Counter() Counter({'e': 4, 'b': 3, 'a': 2, 'd': 2, 'c': 1}) Counter({'orange': 6, 'green': 5, 'red': 3}) Counter({'dogs': 8, 'cats': 4}) |
Counter对象有一个字典接口,只是它们会为丢失的项返回一个零计数,而不是引发KeyError,示例如下:
# 存在元素计算
c5 = Counter(['eggs', 'ham', 'jar ', 'ham'])
print(c5['ham'])
# 缺失元素计数为0
print(c5['bacon'])输出结果如下:
2 0 |
从Counter中删除元素
要从Counter中删除元素,可以使用del关键字。请记住,将计数设置为零并不会从计数器中删除一个元素。请看示例代码:
# –从Counter对象删除元素 – #
# 0计数的counter条目项
c5['sausage'] = 0
print(c5)
# del 实际删除条目项
del c5['sausage']
print(c5)输出结果为:
Counter({'ham': 2, 'eggs': 1, 'jar ': 1, 'sausage': 0}) Counter({'ham': 2, 'eggs': 1, 'jar ': 1}) |
如代码所示,我们将0设置为计数器中不存在的项。Python将该项以零值添加到Counter中。在第7行中,我们使用del关键字完全删除该项。很明显,计数为0,并不会删除Counter中的计数项,而要删除之,得用del命令才行。
Counter方法
Counter对象除了支持所有字典可用的方法之外,以下是其特有最常见方法:返回一个迭
1)elements():
返回迭代器,其为重复相应元素次数与其计数值相等的迭代器。按第一次遇到的顺序返回元素。如果一个元素的计数小于1,elements()将忽略它。示例如下:
# – Counter 对象方法 – #
# elements()
counter = Counter(a=1, b=2, c=0, d=-2, e=4)
sorted_elements = sorted(counter.elements())
print(sorted_elements)输出结果为:
['a', 'b', 'b', 'e', 'e', 'e', 'e'] |
2)most_common([n]):
返回n个最常见元素的列表,元素的计数大小从最大到最小。如果省略n或None, most_common()将返回计数器中的所有元素。计数相等的元素按第一次遇到的顺序排列:
# 2)most_common()
most_common_3 = Counter('abracadabrae').most_common(3)
print(most_common_3)输出结果为:
[('a', 5), ('b', 2), ('r', 2)] |
3)subtract([iterable-or-mapping]):
从可迭代对象或另一个映射(或计数器)中减去元素。像dict.update(),但是减去计数而不是替换它们。输入和输出都可能是零或负的。示例如下:
# 3)subtract()
c_1 = Counter(a=4, b=2, c=0, d=-2)
c_2 = Counter(a=1, b=2, c=3, d=4)
c_1.subtract(c_2)
print(c_1)输出结果如下:
Counter({'a': 3, 'b': 0, 'c': -3, 'd': -6}) |
4)两个方法
通常的字典方法可用于Counter对象,但有两个方法针对计数器的工作方式不同:
fromkeys(iterable):
这个类方法Counter对象没实现。
update([iterable-or-mapping]):
从可迭代对象中计数元素,或从另一个映射(或计数器)中添加元素。类似dict.update(),但Counter是增加计数而不是替换它们。而且,迭代对象应该是元素序列,而不是(键,值)对的序列。示例如下:
# 4)update()
d = Counter(a=3, b=1)
d.update({'a': 5, 'c': 4})
print(d)
d.update('aBac')
print(d)
d.update(dict([('a',10),('e',9)]))
print(d)
#但不要这样:
d.update([('a',10),('e',9)])
print(d)请注意下面的输出结果:
Counter({'a': 8, 'c': 4, 'b': 1}) Counter({'a': 10, 'c': 5, 'b': 1, 'B': 1}) Counter({'a': 20, 'e': 9, 'c': 5, 'b': 1, 'B': 1}) Counter({'a': 20, 'e': 9, 'c': 5, 'b': 1, 'B': 1, ('a', 10): 1, ('e', 9): 1}) |
1.1.1 数学式操作
Counter提供了几种数学操作来组合Counter对象运算,以生成多集(计数大于零的计数器)。加减法通过加减相应元素的计数来合并计数器。交集和并集返回对应计数的最小值和最大值。每个操作都可以接受带符号计数值的输入,但输出将排除计数为零或更少的结果。
c = Counter(a=3, b=1)
d = Counter(a=1, b=2)
print(c + d)
print(c - d)
print(c & d)
print(c | d )输出结果类似如下:
Counter({'a': 4, 'b': 3}) Counter({'a': 2}) Counter({'a': 1, 'b': 1}) Counter({'a': 3, 'b': 2}) |
一元加减法是与空计数器相加或与空计数器相减的快捷方式。示例如下:
#一元加减
c = Counter(a=2, b=-4)
print(+c)# 一元加
print(-c)# 一元减输出结果如下:
Counter({'a': 2}) Counter({'b': 4}) |
简而言之,可利用Counter对象实现一些相关数据的统计分析。
本文小结
本篇文章主要介绍了Python内置集合模块的工具类Counter的使用,并结合代码和描述,以期深入浅出的帮助你更好的理解和掌握Counter相关内容和应用。若是初学者,记得一定要动手实践一把才是最佳学习模式。动起手来,更进一步。本期就介绍这些了,下次见!
最后,记得 点赞+关注@传新视界,分享出去给更多的朋友看到,谢谢^_^
相关推荐
- windows补丁怎么更新(windows 补丁更新)
-
windowsserver系统补丁升级的方法,1.打开WindowsServer系统运行对话框;2.在对话框中输入“control”;3.系统控制面板窗口自动打开;4.点击“Systemand...
- 电脑打不开了怎么重装系统(电脑打不开怎么重装系统不用u盘)
-
1、在可用电脑上制作好U盘启动盘,将下载的电脑系统iso文件直接复制到U盘的GHO目录下;2、在开不了机的电脑上插入U盘,重启后不停按F12或F11或Esc等快捷键打开启动菜单,选择U盘选项回车,比如...
- 一键清理垃圾下载(一键清除垃圾软件下载)
-
手机弹出广告是因为手机上的软件自动推送广告,可以在手机设置里关闭应用的消息通知,方法如下:1、找到手机设置,点击进入2、找到应用和通知,点击进入3、点击通知管理,点击进入4、我们可以看到自己开启消息通...
- ghost下载中文版官网(ghost8.0下载)
-
如果你下载的ghostwin7文件如果是用于系统安装。是不是映像文件要符合以下要求:1,压缩包完好无损。2,减压后的映像文件后缀名为ISO或者GHO.3,文件要在硬盘根目录才便于识别。4,映像文件后缀...
- win10最新版本是多少2025(win10最新版本是20h2吗)
-
1、打开软件,选择需要安装的win10系统。(4g以上内存选择64位系统)2、接着我们耐心等待下载重装资源。3、资源下载完成后,等待环境部署完毕重启即可。4、进入到pe系统后,打开小白工具,选择安装的...
- u盘显示被写保护怎么处理
-
U盘被写保护可以通过以下方法解除:格式化U盘:检查U盘上是否有写保护按钮,如果有,将其拨下,然后对U盘进行格式化即可。分区格式为exFat异常:这时需要Win+R打开窗口,输入cmd并点击确定,然后在...
- 电脑硬盘坏了恢复数据成功率高吗
-
1.不能全部恢复。因为电脑硬盘数据丢失可能是硬件故障、病毒攻击、人为误操作等原因造成,而不同的原因造成的数据丢失程度不同,可恢复的数据也有所不同。2.但也有可能可以全部恢复。如果是硬件故障引起的数...
- 移动硬盘怎么分区合并(移动硬盘分区合并最简单三个步骤)
-
1、按下组合键“win+R”打开运行窗口。2、在其中的输入框中输入“diskmgmt.msc”,再点击“确定”。3、在弹出的窗口中就可以看到要合并的磁盘了。4、在磁盘上单击鼠标右键。在弹出的选项框中点...
- 电脑bios有什么用(电脑bios能干什么)
-
电脑BIOS(基本输入输出系统)是计算机启动时运行的固件,它负责初始化计算机硬件,并提供操作系统加载所需的基本功能。BIOS主要功能包括:检测和配置硬件设备、加载操作系统、管理电源和温度、提供系统启动...
- 华硕电脑蓝屏怎么修复(华硕蓝屏怎么办)
-
华硕电脑蓝屏恢复的方法如下:安全模式进入系统。重启电脑后,连续按下F8键直至出现启动选项界面,选择安全模式进入系统,若此时能够正常运行,说明问题可能是由于软件冲突引起的。检查驱动程序兼容性。过于陈旧或...
- win10教育版怎么改成专业版(win10最稳定三个版本)
-
一、首先,点击Windows10“开始”菜单,找到电脑应用列表,二、然后,在应用列表中找到“Windows系统”文件夹中找到“命令提示符”,点击打开。三、然后,系统跳转到“命令提示符”窗口。四、然后,...
- ps下载官网(ps官网免费下载)
-
要从Adobe官网下载AdobePhotoshop(PS),可以按照以下步骤进行:1.打开网页浏览器,进入Adobe官网的主页。网址是:https://www.adobe.com。2.在网页的顶...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
慕ke 前端工程师2024「完整」
-
失业程序员复习python笔记——条件与循环
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
