python counter函数_Python中的魔法函数——Counter

Python的标准库collections中有很多魔法函数,可以使平时的数据处理非常高效,今天介绍一个很好用的计数函数——Counter。

Counter函数的功能主要是计数器,特别是在对源数据是字典类型的数据进行计数时,如果不想写冗长繁琐的for循环,那么使用Counter函数将是一个不错的选择。

这里以一个简单的计数场景来演示,假设我们有一组以颜色名称和颜色数量为键值对的字典对象,我们需要对同一种颜色进行累计计数(字典中可能有多组同一颜色的键值对),看起来似乎只能使用笨笨的循环来进行操作了。

colors = [{'red':4},{'blue':5},{'red':8},{'green':7},{'blue':8},{'blue':10},{'green':12}]

方法一——使用比较传统的循环方法:

result = {}for i in colors:if list(i.keys())[0] not in result:result[list(i.keys())[0]] = list(i.values())[0]else:result[list(i.keys())[0]] += list(i.values())[0]{'red': 12, 'blue': 23, 'green': 19}

如果这里使用collections标准库中的Counter函数,则整个过程会无比简单:

方法二——Counter函数:

from collections import Counterc = Counter()for i in colors:c[list(i.keys())[0]] += list(i.values())[0]Counter({'blue': 23, 'green': 19, 'red': 12})

这里Counter容器实现了一个自动化的计数器,当Counter中不存在某个键时,赋值操作会自动创建一个新的键,而不是像方法一中那样需要手动去判断某个键是否已经存在在字典里面。

除此之外,Counter神奇的地方在于它有很多可以简单调用的统计方法,比如我们想要获取结果中正序/倒序的TOPN记录,则可以直接这样写:

c.most_common(2)[('blue', 23), ('green', 19)]

当对数量巨大、且重复记录多的字典对象进行汇总计数操作时,Counter函数能够非常方便、高效的胜任此项工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值