Python中itertools.groupby分组的使用
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分组的使用的更多相关文章
- itertools.groupby()分组字典列表
## itertools.groupby()分组字典列表数据 from operator import itemgetter from itertools import groupby student ...
- Python中的字典分组函数(groupby,itertools)
from operator import itemgetter # itemgetter用来去dict中的key,省去了使用lambda函数 from itertools import groupby ...
- Python中itertools模块
itertools模块包含创建有效迭代器的函数,可以用各种方式对数据进行循环操作,此模块中的所有函数返回的迭代器都可以与for循环语句以及其他包含迭代器(如生成器和生成器表达式)的函数联合使用. ch ...
- python中excel数据分组处理
1.场景描述 因文本相似性热度统计(python版)需求中要根据故障类型进行分组统计,需要对excel进行分组后再分词统计,简单记录下,有需要的朋友可以直接拿走,不客气! 2.解决方案 采用panda ...
- python中itertools里的product和permutation
平时经常碰到全排列或者在n个数组中每个数组选一个值组成的所有序列等等问题,可以用permutation和product解决,很方便,所以在此mark一下吧 直接上代码 from itertools i ...
- python中 Lambda,Map,Filter,Itertools,Generator高级函数的用法
Lambda 函数 Lambda 函数是一种比较小的匿名函数--匿名是指它实际上没有函数名. Python 函数通常使用 def a_function_name() 样式来定义,但对于 lambda ...
- [PY3]——根据某个特定的字段来分组迭代访问一个字段或序列?/ itertools.groupby( )函数
问题 你有一个字典或者实例的序列,然后你想根据某个特定的字段(比如‘date’)来分组迭代访问. 解决方案 itertools.groupby( )函数 itertools.groupby(rows, ...
- python中groupby函数详解(非常容易懂)
一.groupby 能做什么? python中groupby函数主要的作用是进行数据的分组以及分组后地组内运算! 对于数据的分组和分组运算主要是指groupby函数的应用,具体函数的规则如下: df[ ...
- python中pandas数据分析基础3(数据索引、数据分组与分组运算、数据离散化、数据合并)
//2019.07.19/20 python中pandas数据分析基础(数据重塑与轴向转化.数据分组与分组运算.离散化处理.多数据文件合并操作) 3.1 数据重塑与轴向转换1.层次化索引使得一个轴上拥 ...
随机推荐
- pdfium sdk调用方式
FPDF_InitLibrary(NULL); FPDF_CreateNewDocument(); FPDF_DestroyLibrary();
- 如何去掉任务栏的IE搜索栏
在IE图标的位置单击鼠标右键,选择退出.
- python27期day16:序列化、json、pickle、hashlib、collections、软件开发规范、作业。
序列化模块:什么是序列化呢? 序列化的本质就是将一种数据结构(如字典.列表)等转换成一个特殊的序列(字符串或者bytes)的过程就叫做序列化.将这个字典直接写入文件是不可以的,必须转化成字符串的形式, ...
- Dubbo服务集群容错
Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务应用场景来选择合适的集群容错模式,这个对于很多应用都是迫切希望的,只需要通过简单的配 ...
- java为什么学JavaScript?
就现在的趋势来说,Spring无疑是一家独大的,它有太多利益 现在在Java EE开发中,Spring已经成为和Java核心库一样的基础设备,所以说假如想成为一个合格的Java程序员,Spring必定 ...
- n8n 基于node 的流程自动化工具
n8n 是基于node开发的流程自动化工具,提供了可视化的操作,我们可以用来集成不同的服务. 目前已经提供了很多的服务集成组件,同时我们也可以方便的自己扩展,后边会进行一个系统的 学习,同时介绍下使用 ...
- Nginx主配置文件说明
#运行用户 user nobody; #启动进程,通常设置成和cpu的数量相等 worker_processes ; #全局错误日志及PID文件 #error_log logs/error.log; ...
- loj2305 NOI2017 游戏
题目链接 思路 既然\(x\)的数量那么小,我们就可以先把每个\(x\)搜索一遍. 枚举x的时候不需要把\(a,b,c\)全枚举一遍,只要枚举其中的两个就可以枚举到当前位置选任何车的情况. 然后就变成 ...
- 【LGR-060】洛谷10月月赛 I
A - 打字练习 出题:memset0 送分模拟题,按题意模拟即可. 需要注意的是对退格键的判断,如果光标已经在行首,则直接忽略被读入的退格键. B - 小猪佩奇爬树 出题:_QAQ 维护所有相同节点 ...
- Linux性能优化实战学习笔记:第三十六讲
一.上节总结回顾 上一节,我们回顾了经典的 C10K 和 C1000K 问题.简单回顾一下,C10K 是指如何单机同时处理 1 万个请求(并发连接 1 万)的问题,而 C1000K 则是单机支持处理 ...