资讯专栏INFORMATION COLUMN

数据分组统计

AJie / 1011人阅读

摘要:缘起在做业务报表时需要统计出如下图的结果。实现模拟数据结构如下这里我首先自己去实现了这个,代码如下自实现一使用第三方库的确,熟练掌握第三方库会让程序看起来更简短,但是不能忘了自己也要能实现

缘起

在做业务报表时需要统计出如下图的结果。

即 横坐标是10节课以内的观看人数是244人, 10-20 节课的人数是233人,依次内推。

实现

模拟数据结构如下

这里我首先自己去实现了这个,代码如下:

自实现一
        result_dict = {}
        datum = 5
        for order in order_list:
            res_div = (order["amount"] - 1) // datum

            key = str((res_div+1) * datum)
            if key not in result_dict:
                result_dict.update({key: 1})
            else:
                result_dict.update({key: result_dict.get(key) + 1})
        apply_data = list(result_dict.items())
使用第三方库
        from itertools import groupby
        
        result_dict = {}
        datum = 5
        for k, g in groupby(order_list, key=lambda x: (x["amount"] - 1) // datum):
            result_dict["{}".format((k+1) * datum)] = int(len(list(g)))

        apply_data = list(result_dict.items())

的确,熟练掌握第三方库会让程序看起来更简短,但是不能忘了自己也要能实现

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38677.html

相关文章

  • 自研实时计算模块介绍及运维数据应用场景实施

    自研实时计算模块介绍及运维数据应用场景实施 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; ...

    不知名网友 评论0 收藏2564
  • 简洁方便的集合处理——Java 8 stream流

    摘要:打印结果结果按照年龄从小到大进行排序。打印结果果然,前两个人都被去除了,只剩下最老的葫芦娃爷爷。比如检测有没有来自巴黎的用户。可以根据用户所在城市进行分组结果是一个,为不重复的城市名,为属于该城市的用户列表。 背景 java 8已经发行好几年了,前段时间java 12也已经问世,但平时的工作中,很多项目的环境还停留在java1.7中。而且java8的很多新特性都是革命性的,比如各种集合...

    godiscoder 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<