Python统计可散列的对象之容器Counter详解
作者:李元静 时间:2023-09-23 18:30:50
一、初始化Counter
Counter支持3种形式的初始化,比如提供一个数组,一个字典,或单独键值对“=”式赋值。具体初始化的代码如下所示:
import collections
a = collections.Counter(['a', 'a', 'b', 'b', 'b', 'c'])
b = collections.Counter({"a": 2, "b": 3, "c": 1})
c = collections.Counter(a=2, b=3, c=1)
print(a)
print(b)
print(c)
运行之后,效果如下:
这种是直接通过构造函数进行填充。当然,我们还可以直接构造一个空Counter,然后通过update()函数进行填充。
import collections
a = collections.Counter()
a.update(['a', 'a', 'b', 'b', 'b', 'c'])
print(a)
运行效果和上面的a一样,这里就不上图了,感兴趣的读者自己测试运行。
二、遍历Counter
通过上面初始化以及更新,我们Counter容器中存在了很多的值。因为输出的是字典的形式,所以我们可以直接通过字典的方式进行访问。
import collections
a = collections.Counter()
a.update(['a', 'a', 'b', 'b', 'b', 'c'])
for key in 'abcde':
print(key, "=", a[key])
运行之后,效果如下:
可以看到容器Counter,可以输出空值不报错。因为当我们没有找到某个值时,其默认计数为0。
三、elements()
当然,如果你想实现那种输出没有0值的遍历。可以使用elements()迭代器。具体代码如下:
import collections
a = collections.Counter()
a.update('caabbbc')
print(list(a.elements()))
运行之后,效果如下:
需要注意的是,elements()虽然去除了0值,但并不能保证遍历顺序。
四、most_common
most_common()函数可以生成一个序列,统计包含n个最长遇到的输入值以及相应的计数。这里,我们来实现统计一个文档中,字母出现的个数。具体代码如下:
import collections
c = collections.Counter()
with open('英文文档.txt', 'rt') as f:
for line in f:
c.update(line.rstrip().lower())
for letter, count in c.most_common(5):
print("{}:{}".format(letter, count))
运行之后,效果如下:
这里统计的英文文档中,空格最多,达到了658个。其他的一次都是前几最多的个数。这样我们可以通过Counter生成一个英文文档中字母的频度分布,在自然语言的处理当中。就可以完美的结合起来进行统计使用。
五、算数操作
Counter容器不仅可以统计频度的分布。还可以进行一些算数运算。比如将两个Counter容器进行相加进行统计,亦或者相减也行。具体操作如下:
import collections
c1 = collections.Counter('abcbcabds')
c2 = collections.Counter('abcbcabds')
print("原始值:")
print(c1)
print(c2)
print("算数运算后:")
print(c1 + c2)
print(c1 - c2)
print(c1 & c2)
print(c1 | c2)
运行之后,效果如下:
来源:https://liyuanjinglyj.blog.csdn.net/article/details/115793706
标签:Python,容器,Counter
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Python 多线程知识点总结及实例用法
2022-04-27 13:19:49
Python字体反爬实战案例分享
2021-06-18 01:00:46
![](https://img.aspxhome.com/file/2023/9/75929_0s.png)
浅谈python numpy中nonzero()的用法
2021-09-23 00:06:01
Python使用Excel将数据写入多个sheet
2022-01-20 11:52:08
![](https://img.aspxhome.com/file/2023/9/133289_0s.png)
有效网页表单的八条规则[译]
2009-06-01 10:29:00
![](https://img.aspxhome.com/file/UploadPic/20096/1/01-18s.png)
Django自定义分页效果
2023-12-06 00:09:04
![](https://img.aspxhome.com/file/2023/1/84001_0s.png)
Python生成随机数的方法详解(最全)
2023-05-04 12:36:08
![](https://img.aspxhome.com/file/2023/5/71355_0s.png)
白鸦:贪守米缸者,饿死灶台
2009-02-23 13:03:00
asp从Excel中筛选符合条件的记录保存至新的Excel中
2007-09-06 19:20:00
Python爬虫之Spider类用法简单介绍
2023-04-23 15:03:27
![](https://img.aspxhome.com/file/2023/6/134556_0s.png)
微信小程序位置授权处理方法
2024-06-10 08:21:05
css被遮挡的绝对定位
2008-02-29 12:00:00
![](https://img.aspxhome.com/file/UploadPic/20082/29/2008229125054234s.gif)
卸载tensorflow-cpu重装tensorflow-gpu操作
2022-07-31 12:46:13
![](https://img.aspxhome.com/file/2023/0/131650_0s.jpg)
将字符实体引用转换成 Unicode 字符
2011-07-01 12:31:51
python接口自动化之ConfigParser配置文件的使用详解
2023-09-07 02:56:04
![](https://img.aspxhome.com/file/2023/2/92332_0s.png)
Python语言实现SIFT算法
2022-12-30 17:58:14
![](https://img.aspxhome.com/file/2023/6/97626_0s.png)
css2.1实现多重背景和边框效果
2010-06-23 19:02:00
![](https://img.aspxhome.com/file/UploadPic/20106/23/01-35s.jpg)
python神经网络MobileNet模型的复现详解
2022-09-24 19:54:14
![](https://img.aspxhome.com/file/2023/0/120570_0s.png)
python shapely.geometry.polygon任意两个四边形的IOU计算实例
2021-09-23 03:19:46
python web框架的总结
2022-01-13 12:22:24