社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

Python爱好者社区 • 2 年前 • 217 次点击  
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,4for 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交流已成立


公众号运营至今,离不开小伙伴们的支持。
为了给小伙伴们提供一个互相交流的技术平台,特地开通了Python交流群。
群里有不少技术大神,不时会分享一些技术要点,更有一些资源收藏爱好者不时分享一些优质的学习资料。(免费,不卖课!)
需要进群的朋友,可长按扫描下方二维码。

▲长按扫码

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/125872
 
217 次点击