collections是python的标准库,它提供了一些解决特定问题的容器,也就是说有些问题虽然可以用list,tuple,dict解决,但解决起来太麻烦,而这些问题又经常遇到,所以他们就把这些问题的通用方法整理了出来,放到collections库中让人使用。

collections中一共有9种容器,其中counter、defaultdict、deque、namedtuple、orderdict比较常用。

今天我们单独来讲讲Counter的用法!

Counter目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value。因此,我们可以通过字典的取数方式,进行取数。

在使用之前,我们需要先导入这个库,导入方法如下:

from collections import Counter

使用Counter类,我们需要先实例化一个Counter类,我们先实例化一个空的Counter类。

c1 = Counter()
c1

结果如下:

我们可以往括号中传入参数,来帮助我们实现不同情况下的 "值计数"

Counter类的创建

我们可以往Counter类中,分别传入字符串、列表、元组、字典等,创建一个Counter类。

1. 传入一个字符串
c2 = Counter("hello huang")
c2

结果如下:

2. 传入一个列表
lis = [i for i in "chinese"]
c3 = Counter(lis)
c3

结果如下:

3. 传入一个字典
import random
dic = {k: random.randint(1,4) for k in "abcdefg"}
c4 = Counter(dic)
c4

结果如下:

4. 关键字参数
c5 = Counter(a=7,b=8)
c5

结果如下:

Counter类中计数元素值的访问

和访问字典类似,但是和字典唯一不同的是,如果所访问的键不存在时,返回0,而不是KeyError。

c = Counter("hello huang")
c["h"]

结果如下:

Counter类中计数元素的修改

关于Counter类中的计数元素,既可以做加减法、还可以做集合运算、也可以删除。

1. 加减法
① 加法

我们既可以使用update函数,完成这个操作。还可以使用+号,完成这个操作。

② 减法

我们既可以使用subtract函数,完成这个操作。但是-号用法就不同了,它应该属于集合运算,只统计在集合a中,而不在集合b中的值。

2. 集合运算

上面的-号就是一个集合运算,我在为大家介绍一下与&、|或操作。

① 与&

&操作,是找两个collection中都有的键最小的键值。

c1 = Counter("chinese")
c2 = Counter("where")c1 & c2

结果如下:

② |或

|操作,是找两个collection中的键最大的键值(可以只有一个collection有这个键,但是结果中的键值必须大于零,小于零的被舍弃)。

c1 = Counter("chinese")
c2 = Counter("where")c1 | c2

结果如下:

3. 删除操作

删除元素使用的是del函数。

c = Counter("where")del c["r"]
c

结果如下:

Counter类中其它常用函数

1. most_common(n)找出重复次数最多的前n个。
c = Counter("aabbbcccddddeeeee")
c.most_common(2)

结果如下:

2. key和value用于获取Collections键和键值的集合。
c = Counter("chinese")
c.keys()
c.values()

结果如下:

当然,我们也可以使用dict()函数将collection中的内容转化为字典,我们也可以使用list()函数将collection中的键转化为list,这里不在讲述,大家自行下去学习。

推荐阅读:
入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|

年度爆款文案

  • 1).卧槽!Pdf转Word用Python轻松搞定!

  • 2).学Python真香!我用100行代码做了个网站,帮人PS旅行图片,赚个鸡腿吃

  • 3).首播过亿,火爆全网,我分析了《乘风破浪的姐姐》,发现了这些秘密

  • 4).80行代码!用Python做一个哆来A梦分身

  • 5).你必须掌握的20个python代码,短小精悍,用处无穷

  • 6).30个Python奇淫技巧集

  • 7).我总结的80页《菜鸟学Python精选干货.pdf》,都是干货

  • 8).再见Python!我要学Go了!2500字深度分析!

  • 9).发现一个舔狗福利!这个Python爬虫神器太爽了,自动下载妹子图片

点阅读原文,看200个Python案例!

Python里最好用的counter计数器,不接受反驳!相关推荐

  1. 下列哪个不是目前python里的内置模块-python中那些小众但有用的内置模块

    今天带来的是python里一些小众但是却比较实用的python库,一起来看看吧! pprint:更清晰的打印 pprint 是 pretty printer 的缩写,用来打印 Python 数据结构, ...

  2. python里unexpected eof while parsing_使用Python编程时的10个注意事项

    01初始变化量 在Python里,一个表达式中的名字在它被赋值之前是没法使用的.这是有意而为的:这样能避免一些输入失误,同时也能避免默认究竟应该是什么类型的问题(0,None,"" ...

  3. 为什么在Python里推荐使用多进程而不是多线程?(为什么python多线程无法增加CPU使用率?)...

    最近在看Python的多线程,经常我们会听到老手说:"Python下多线程是鸡肋,推荐使用多进程!",但是为什么这么说呢? 要知其然,更要知其所以然.所以有了下面的深入研究: 首先 ...

  4. Python中Collections模块的Counter容器类使用教程

    Python中Collections模块的Counter容器类使用教程 1.collections模块 collections模块自Python2.4版本开始被引入,包含了dict,set,list, ...

  5. python里的collections模块

    python里的collections模块 collections模块里提供了一些特殊功能的容器: namedtuple deque ChainMap Counter OrderedDict defa ...

  6. python里输入3.14*2会出现数据报错_Python程序员的30个常见错误

    导读:在这篇文章中,我将总结新老Python程序员常犯的一些错误,以帮助你们在自己的工作避免犯同样或类似错误. 作者:Mark Lutz 译者:伯乐在线 - 果果夫斯基 来源:http://blog. ...

  7. 一篇长文带你在python里玩转Json数据

    Json简介 Json(JavaScript Object Notation) 很多网站都会用到Json格式来进行数据的传输和交换. 这因为Json是一种轻量级的数据交换格式,具有数据格式简单,读写方 ...

  8. python中的format什么意思中文-python里format什么意思

    format是python2.6新增的一个格式化字符串的方法,相对于老版的%格式方法,它有很多优点. 1.不需要理会数据类型的问题,在%方法中%s只能替代字符串类型(推荐学习:Python视频教程) ...

  9. python能绘制统计图吗-特征锦囊:常用的统计图在Python里怎么画?

    今日锦囊 常用的统计图在Python里怎么画? 这里的话我们介绍几种很简单但也很实用的统计图绘制方法,分别有条形图.饼图.箱体图.直方图以及散点图,关于这几种图形的含义这边就不多做解释了. 今天用到两 ...

最新文章

  1. 更改sybase下设备名
  2. Octavia 创建 loadbalancer 的实现与分析
  3. 树状数组(Binary Indexed Tree) 总结
  4. 局域网抓包分析工具_[源码和文档分享]基于Libpcap实现的局域网嗅探抓包发包解析工具...
  5. 遍历 HashMap 的 5 种最佳方式,我不信你全知道!
  6. [BUAA-SE-2018]结对作业测试报告
  7. oracle 意外事件,Oracle数据库REDO损坏ora-00333修复手札
  8. 本地数据库与mysql同步软件下载_SyncNavigator数据库同步软件
  9. iText中输出 中文
  10. Dell™ PowerEdge™ R710机架式服务器旨在成为虚拟化企业的构建块
  11. 项目部署:IIS部署后运行报错iconfont.woff:1 Failed to load resource: the server responded with a status of 404
  12. python 整除的数组_LeetCode 974. 和可被 K 整除的子数组 | Python
  13. 摩尔定律和梅特卡夫定律_摩尔定律f
  14. (Web前端)十分优秀的后台管理框架收集
  15. 简述对CAN协议栈的理解
  16. [RK3288][Android6.0] 调试笔记 --- Audio的Voice Call无法静音问题
  17. 语音识别(ASR)论文优选:Icassp 2022 M2MeT方案总结
  18. 猜想2010年IT十大表情
  19. Candence PCB Si 仿真设计篇前导:IBIS模型与PKG介绍
  20. 一触即达!佰达慧兴携新风向标开展新零售电商产业升级

热门文章

  1. 搭建各类游戏如何选择合适的服务器
  2. 计算机在智能建筑中的应用,【计算机技术在建筑智能化中的应用研究原稿_0材料】...
  3. windows和linux的icmp包,linux和windows下icmp的区别
  4. 拜登留学新政:美国读博直接拿绿卡,增加H1B签证限额!但未来留美门槛反而变高了?...
  5. 印刷行业中过UV是什么意思?
  6. 克罗内克积Kronecker
  7. [ARCGIS]带黑边的IMG格式影像如何消除黑边?
  8. 华为p50不会用鸿蒙系统,华为p50会不会预装鸿蒙系统_华为p50会预装鸿蒙系统吗...
  9. G1D38-Evaluation Metrics
  10. [XJTUSE]计算机图形学第二章作业,使用OpenGL编程实现DDA、中点画线和Bresenham算法和中点画圆法