python中counter怎么用_带你走进python 计数器类Counter的用法

什么是Counter?

Counter 是一个在collections包里的类,正如其名,是一个用于计数的工具。

我们可以用Counter(nums)这样的构造函数构造一个Counter类,其中nums是一个列表。

构造好的Counter实例可以看作一个字典,键是nums的每一项,值是它的出现次数。

如果上面的叙述让你感到很混乱的话,我不妨举个例子:

如果一个列表a = [1,1,3,4,3],你想要统计每项的出现次数,那么你使用b = Counter(a),那么这时候b就像一个这样的字典{1:2,3:2,4:1},表示数字1出现了2次,数字3出现了2次,数字4出现了1次。

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 Counter

c = 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)]

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值