Python中itertools.groupby分组的使用

有时候我们需要给一个列表按照某个属性分组,可以借助groupby来实现。

比如:一下列表我想以严重程度给它分组,并求出每组的元素个数。

from itertools import groupby
from operator import itemgetter temp_list = [
{'id': '1854', 'severity': '严重', 'title': '【数据质量管理】【稽核模板管理】新增“字符长度”和“值域”的模板类型的数据的时候页面上有报错信息造成该类型的稽核模板不能新建成功', 'status': 'active', 'openedBy': '孙良红', 'openedDate': '2019-10-10 14:21:39', 'assignedTo': '赵元鹏'}, {'id': '1938', 'severity': '严重', 'title': '【管理平台】【安全认证中心】【账号管理】应用系统管理,修改应用编号字段后,不会更新记录,会新增一条记录', 'status': 'active', 'openedBy': '洪燕', 'openedDate': '2019-10-11 10:25:24', 'assignedTo': '项坤'},
{'id': '1942', 'severity': '严重', 'title': '【管理平台】【安全认证中心】【账号管理】应用系统管理-新增一个编号相同的应用,接口报错500,页面没有任何提示信息', 'status': 'active', 'openedBy': '洪燕', 'openedDate': '2019-10-11 11:20:36', 'assignedTo': '项坤'},
{'id': '1946', 'severity': '严重', 'title': '【数据质量管理】【稽核结果管理】【详情页】稽核任务跑出来的结果不正确', 'status': 'active', 'openedBy': '孙良红', 'openedDate': '2019-10-11 11:36:16', 'assignedTo': '金飞宇'},
{'id': '2067', 'severity': '严重', 'title': '【业务中台】【模型中心】【模型管理】模型管理列表页和新增模型弹框中模型分组下拉框中没有数据', 'status': 'active', 'openedBy': '陈玲霞', 'openedDate': '2019-10-12 13:39:33', 'assignedTo': '汪洋'},
{'id': '2077', 'severity': '严重', 'title': '【数据中台】【IdMapping】IdMapping模板文件导入失败,后端返回字典里没有此对象类型', 'status': 'active', 'openedBy': '季峰', 'openedDate': '2019-10-12 14:17:00', 'assignedTo': '赵元鹏'},
{'id': '2081', 'severity': '严重', 'title': '【业务中台】【模型中心】【模型管理】模型管理页面,导入模型任务时,页面提示导入成功,但实际上athena_task_info表中并没有新增模型记录,页面也没有展示', 'status': 'active', 'openedBy': '陈玲霞', 'openedDate': '2019-10-12 14:24:22', 'assignedTo': '赵杨军'},
{'id': '2084', 'severity': '严重', 'title': '【业务中台】【模型中心】【模型管理】模型管理页面,导入非.task后缀文件时接口报500,且页面提示错误', 'status': 'active', 'openedBy': '陈玲霞', 'openedDate': '2019-10-12 14:32:53', 'assignedTo': '赵杨军'},
{'id': '2099', 'severity': '严重', 'title': '【业务中台】【模型中心】【算子管理】1、新增算子弹框中无法选择算子图标;2,新增算子时,上传不正确的算子附件,点击保存,接口报500,且页面没有给出友好提示;4、更新算子版本界面也有同样的问题', 'status': 'active', 'openedBy': '陈玲霞', 'openedDate': '2019-10-12 16:03:59', 'assignedTo': '赵杨军'},
{'id': '2108', 'severity': '严重', 'title': '【业务中台】【服务中心】【服务资源注册】新增更新说明接口报错500,Error updating database', 'status': 'active', 'openedBy': '刘丹', 'openedDate': '2019-10-12 17:29:43', 'assignedTo': '韩佳超'},
{'id': '2150', 'severity': '严重', 'title': '【业务中台】【模型中心】【自定义建模】画布中,同一数据源和同一算子连线连两次时,页面报SQL错误,应该给出友好的提示', 'status': 'active', 'openedBy': '陈玲霞', 'openedDate': '2019-10-14 10:41:54', 'assignedTo': '史柯'},
{'id': '2226', 'severity': '严重', 'title': '【数据质量管理】【数据质量报告】不同表中相同的字段名,应该属于不同的字段', 'status': 'active', 'openedBy': '孙良红', 'openedDate': '2019-10-14 17:00:32', 'assignedTo': '金飞宇'},
{'id': '2374', 'severity': '严重', 'title': '【业务中台】【模型中心】【模型管理】新增模型时,只填写必填项,其他字段默认为空,保存之后,save接口报500错误', 'status': 'active', 'openedBy': '陈玲霞', 'openedDate': '2019-10-16 11:07:54', 'assignedTo': '杨可余'},
{'id': '2406', 'severity': '严重', 'title': '【业务中台】【服务中心】【API市场】API列表数据不展示:情况一:已编目服务存在多个标签(对外发布);情况二:已编目服务存在多个标签(对外发布),再删除其他标签只留下对外发布', 'status': 'active', 'openedBy': '刘丹', 'openedDate': '2019-10-16 15:03:57', 'assignedTo': '阮小平'},
{'id': '2444', 'severity': '严重', 'title': '【数据中台】【设备资源注册】资源设备数量共计30794条,进入设备资源注册页面,出现页面崩溃', 'status': 'active', 'openedBy': '季峰', 'openedDate': '2019-10-17 14:25:12', 'assignedTo': '赵元鹏'},
{'id': '2461', 'severity': '严重', 'title': '【业务中台】【标签中心】【标签统计】标签统计页面,对象范围统计中排序方式选择‘从低到高’时,页面报错,接口报500错误', 'status': 'active', 'openedBy': '陈玲霞', 'openedDate': '2019-10-17 16:21:23', 'assignedTo': '阮小平'},
{'id': '1815', 'severity': '严重', 'title': '【业务中台】【消息中心】【消息类型管理】消息类型管理页面,点击‘推送地址配置’按钮,页面弹框报错,缺少表md_msg_application_url', 'status': 'resolved', 'openedBy': '陈玲霞', 'openedDate': '2019-10-10 09:54:51', 'assignedTo': '陈玲霞'},
{'id': '1826', 'severity': '严重', 'title': '【业务中台】【标签中心】【标签统计】对象范围统计-从低到高排序,接口获取值都为0', 'status': 'resolved', 'openedBy': '洪燕', 'openedDate': '2019-10-10 11:17:07', 'assignedTo': '洪燕'},
{'id': '1864', 'severity': '严重', 'title': '【业务中台】【标签中心】【标签分组】属性为‘无效’的标签无法加入分组', 'status': 'resolved', 'openedBy': '洪燕', 'openedDate': '2019-10-10 14:54:58', 'assignedTo': '洪燕'}] # 第一步就是先排序按照你要分组的属性,否则分组会失败。
temp_list.sort(key=itemgetter('severity'))
# 第二步分组 得到的data值是一个迭代器,可以使用sum(1 for x in data)来统计数量,这样会降低内存消耗
res_list = []
for key, data in groupby(temp_list, key=itemgetter("severity")):
print(key,data)
res_list.append({
"item": key,
"value": sum(1 for x in data)
}) return res_list

Python中itertools.groupby分组的使用的更多相关文章

  1. itertools.groupby()分组字典列表

    ## itertools.groupby()分组字典列表数据 from operator import itemgetter from itertools import groupby student ...

  2. Python中的字典分组函数(groupby,itertools)

    from operator import itemgetter # itemgetter用来去dict中的key,省去了使用lambda函数 from itertools import groupby ...

  3. Python中itertools模块

    itertools模块包含创建有效迭代器的函数,可以用各种方式对数据进行循环操作,此模块中的所有函数返回的迭代器都可以与for循环语句以及其他包含迭代器(如生成器和生成器表达式)的函数联合使用. ch ...

  4. python中excel数据分组处理

    1.场景描述 因文本相似性热度统计(python版)需求中要根据故障类型进行分组统计,需要对excel进行分组后再分词统计,简单记录下,有需要的朋友可以直接拿走,不客气! 2.解决方案 采用panda ...

  5. python中itertools里的product和permutation

    平时经常碰到全排列或者在n个数组中每个数组选一个值组成的所有序列等等问题,可以用permutation和product解决,很方便,所以在此mark一下吧 直接上代码 from itertools i ...

  6. python中 Lambda,Map,Filter,Itertools,Generator高级函数的用法

    Lambda 函数 Lambda 函数是一种比较小的匿名函数--匿名是指它实际上没有函数名. Python 函数通常使用 def a_function_name() 样式来定义,但对于 lambda ...

  7. [PY3]——根据某个特定的字段来分组迭代访问一个字段或序列?/ itertools.groupby( )函数

    问题 你有一个字典或者实例的序列,然后你想根据某个特定的字段(比如‘date’)来分组迭代访问. 解决方案 itertools.groupby( )函数 itertools.groupby(rows, ...

  8. python中groupby函数详解(非常容易懂)

    一.groupby 能做什么? python中groupby函数主要的作用是进行数据的分组以及分组后地组内运算! 对于数据的分组和分组运算主要是指groupby函数的应用,具体函数的规则如下: df[ ...

  9. python中pandas数据分析基础3(数据索引、数据分组与分组运算、数据离散化、数据合并)

    //2019.07.19/20 python中pandas数据分析基础(数据重塑与轴向转化.数据分组与分组运算.离散化处理.多数据文件合并操作) 3.1 数据重塑与轴向转换1.层次化索引使得一个轴上拥 ...

随机推荐

  1. pytest_前置后置

    今天总结下pytest,pytest简直就是python自动化中的高富帅,各种操作,哈哈 这次总结主要涉及到了以下几点: 1.unittest中的setUp.tearDown.setUpClass.t ...

  2. 201871010133-赵永军《面向对象程序设计(java)》第十五周学习总结

    201871010133-赵永军<面向对象程序设计(java)>第十五周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...

  3. UiPath:Delay延迟执行,解决UiPath自动输入值不完整问题

    学习过程中出现点击按钮后,由于网页弹出框显示速度慢,造成输入值遗漏或者根本就没有输入问题. 查阅了一下,目前解决方法是在点击按钮后加一段延迟时间,等待他显示完整在输入值.如图 时间格式以秒为单位 00 ...

  4. shell 大小关系 -eq -ne

    -eq:等于-ne:不等于-le:小于等于-ge:大于等于-lt:小于-gt:大于

  5. 03-cmake语法-变量,字符串

    CMake的基本数据类型是字符串(不区分大小写),一组字符串在一起称为列表(list). 条件判断中的取值情况如下表: 真 1, ON, YES, TRUE, Y, 非0的数  假 0, OFF, N ...

  6. TCP数据的传输过程(十)

    建立连接后,两台主机就可以相互传输数据了.如下图所示: 上图给出了主机A分2次(分2个数据包)向主机B传递200字节的过程.首先,主机A通过1个数据包发送100个字节的数据,数据包的 Seq 号设置为 ...

  7. 生鲜超市项目错误及解决办法(crispy_forms、外键指向自己、class嵌套访问父类、meta类及各种字段参数)

    为什么要在INSTALLED_APPS中加入crispy_forms? 因为django-crispy-forms 是对django form在html页面呈现方式进行管理的一个第三方插件. 为什么有 ...

  8. 【Excel】输入单引号

    首位输入:输入两个单引号 拼接输入:可以引入输入 举个例子:拼接一个SQL,values都是字符串,需要引号 =IF( OR(A2="",B2="",C2=&q ...

  9. Linux 访问iphone 上的照片

    下面的链接,就差测试安装ifuse 了,估计是没有什么问题的. https://www.dedoimedo.com/computers/fedora-22-iphone.html

  10. Codeforces Round #604 (Div. 2) D、E、F题解

    Beautiful Sequence Beautiful Mirrors Beautiful Bracket Sequence (easy version) Beautiful Sequence \[ ...