前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python中的魔法函数——Counter

Python中的魔法函数——Counter

作者头像
数据小磨坊
发布2019-05-06 11:06:46
2.6K0
发布2019-05-06 11:06:46
举报
文章被收录于专栏:数据小魔方数据小魔方

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

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

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

代码语言:javascript
复制
colors = [{'red':4},{'blue':5},{'red':8},{'green':7},{'blue':8},{'blue':10},{'green':12}]

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

代码语言:javascript
复制

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函数:

代码语言:javascript
复制
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记录,则可以直接这样写:

代码语言:javascript
复制
c.most_common(2)[('blue', 23), ('green', 19)]

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据小魔方 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档