分组函数(groupby、itemgetter)
from itertools import groupby
from operator import itemgetter d1={'name':'liuyi','age':25,'city':'SZ'}
d2={'name':'chener','age':18,'city':'SH'}
d3={'name':'zhangsan','age':23,'city':'GZ'}
d4={'name':'lisi','age':24,'city':'HZ'}
d5={'name':'wangwu','age':22,'city':'BJ'}
d6={'name':'zhangliu','age':21,'city':'WH'}
lis = [d1,d2,d3,d4,d5,d6] lis.sort(key=itemgetter('city')) # 使用groupby需要先排序 lst_grou = groupby(lis,itemgetter('city')) # itemgetter('city') 相当于 key = lambda x:x['city']
for key,group in lst_grou: # group 使一个迭代器,包含了所有的分组
for g in group:
print(key,g) '''
结果
BJ {'name': 'wangwu', 'age': 22, 'city': 'BJ'}
GZ {'name': 'zhangsan', 'age': 23, 'city': 'GZ'}
HZ {'name': 'lisi', 'age': 24, 'city': 'HZ'}
SH {'name': 'chener', 'age': 18, 'city': 'SH'}
SZ {'name': 'liuyi', 'age': 25, 'city': 'SZ'}
WH {'name': 'zhangliu', 'age': 21, 'city': 'WH'}
'''
from itertools import groupby
from operator import itemgetter d1={'name':'liuyi','age':25,'city':'SZ'}
d2={'name':'chener','age':18,'city':'SH'}
d3={'name':'zhangsan','age':23,'city':'GZ'}
d4={'name':'lisi','age':24,'city':'SZ'}
d5={'name':'wangwu','age':22,'city':'BJ'}
d6={'name':'zhangliu','age':21,'city':'WH'}
lis = [d1,d2,d3,d4,d5,d6] lis.sort(key=itemgetter('city')) # 使用groupby需要先排序 lst_grou = groupby(lis,itemgetter('city')) # itemgetter('city') 相当于 key = lambda x:x['city]
print([key for key,group in lst_grou]) # 列表推导式,会自动去重 '''
结果
['BJ', 'GZ', 'SH', 'SZ', 'WH']
'''
print(dict([(key,list(group)) for key,group in lst_grou])) # 获取字典 '''
结果
{'BJ': [{'name': 'wangwu', 'age': 22, 'city': 'BJ'}],
'GZ': [{'name': 'zhangsan', 'age': 23, 'city': 'GZ'}],
'SH': [{'name': 'chener', 'age': 18, 'city': 'SH'}],
'SZ': [{'name': 'liuyi', 'age': 25, 'city': 'SZ'}, {'name': 'lisi', 'age': 24, 'city': 'SZ'}],
'WH': [{'name': 'zhangliu', 'age': 21, 'city': 'WH'}]}
'''
分组函数(groupby、itemgetter)的更多相关文章
- Atitit 数据存储的分组聚合 groupby的实现attilax总结
Atitit 数据存储的分组聚合 groupby的实现attilax总结 1. 聚合操作1 1.1. a.标量聚合 流聚合1 1.2. b.哈希聚合2 1.3. 所有的最优计划的选择都是基于现有统计 ...
- pandas聚合和分组运算——GroupBy技术(1)
数据聚合与分组运算——GroupBy技术(1),有需要的朋友可以参考下. pandas提供了一个灵活高效的groupby功能,它使你能以一种自然的方式对数据集进行切片.切块.摘要等操作.根据一个或多个 ...
- [转]详解Oracle高级分组函数(ROLLUP, CUBE, GROUPING SETS)
原文地址:http://blog.csdn.net/u014558001/article/details/42387929 本文主要讲解 ROLLUP, CUBE, GROUPING SETS的主要用 ...
- Pandas分组(GroupBy)
任何分组(groupby)操作都涉及原始对象的以下操作之一.它们是 - 分割对象 应用一个函数 结合的结果 在许多情况下,我们将数据分成多个集合,并在每个子集上应用一些函数.在应用函数中,可以执行以下 ...
- Oracle - 查询语句 - 分组函数
/* 分组函数 不能再select子句中出现普通的列,除非这个列在group by中给出 所有的空值都会被分为一组 分组过滤 SELECT FROM WHERE GROUPBY HAVING ORDE ...
- oracle(sql)基础篇系列(一)——基础select语句、常用sql函数、组函数、分组函数
花点时间整理下sql基础,温故而知新.文章的demo来自oracle自带的dept,emp,salgrade三张表.解锁scott用户,使用scott用户登录就可以看到自带的表. #使用ora ...
- Oracle_SQL函数-分组函数
分组函数 什么是分组函数 分组函数作用于一组数据,并对一组数据返回一个值 组函数类型:主要有6种 AVG - 平均 COUNT - 计数 MAX - 最大 MIN - 最小 SUM - 求和 STDD ...
- oracle 10g 学习之多表查询、分组函数(6)
笛卡尔集 l 笛卡尔集会在下面条件下产生: 省略连接条件 连接条件无效 所有表中的所有行互相连接 l 为了避免笛卡尔集, 可以在 WHERE 加入有效的连接条件. 自连接 select m.las ...
- 常用分组函数count-avg-sum-max-min
分组函数也称多行函数,用于对一组数据进行运算,针对一组数据(取自于多行记录的相同字段)只返回一个结果,例如计算公司全体员工的工资总和.最高工资.最低工资.各部门的员工平均工资(按部门分组)等.由于分组 ...
- ORA-00937:不是单组分组函数_Oracle
Demo: SELECT USER_ID, USER_NAME, USER_SEX, MAX(USER_AGE), SUM(USER_MONEY) AS USER_MONEY USER_TEL, US ...
随机推荐
- AD域 域管理员常用命令
简介: 暂时我需要管理60台终端计算机,但是分布的比较广泛,在我们单位整个场区零零散散的分布,巡检一圈仅步行时间就超过30分钟. 为了更好的管理终端计算机,现在正在实验性的配置域,用域来管理这些计算机 ...
- 利用卷积神经网络处理cifar图像分类
这是一个图像分类的比赛CIFAR( CIFAR-10 - Object Recognition in Images ) 首先我们需要下载数据文件,地址: http://www.cs.toronto.e ...
- ROS中的通信机制
http://www.ros.org/core-components/ Communications Infrastructure At the lowest level, ROS offers a ...
- 027 Android 可扩展的listview:ExpandableListView的使用案例
1.ExpandableListView简介 ExpandableListView是一种用于垂直滚动展示两级列表的视图,和 ListView 的不同之处就是它可以展示两级列表,分组可以单独展开显示子选 ...
- 【转】MySQL中EXISTS的用法
原文链接:https://www.cnblogs.com/qlqwjy/p/8598091.html 比如在Northwind数据库中有一个查询为 SELECT c.CustomerId,Compan ...
- PAT(B) 1048 数字加密(Java)字符串
题目链接:1048 数字加密 (20 point(s)) 题目描述 本题要求实现一种数字加密方法.首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位置上的数字进行以下运 ...
- 【自学系列一】HTML5大前端学习路线+视频教程(完整版)
今年,本公司全新发布了囊括Java.HTML5前端.大数据.Python爬虫.全链UI设计.软件测试.Unity 3D.Go语言等多个技术方向的全套视频. 面对这么多的知识点,有的盆友就麻爪了…… 我 ...
- ES6语法基本使用
什么是ES6? ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了.Mozilla公司将在这个标准的基础上,推出JavaScript 2. ...
- js中__proto__和prototype的区别和关系?(转)
转自知乎:https://www.zhihu.com/question/34183746
- 对称加密,非对称加密,数字签名,https
对称加密和非对称加密 对称加密 概念:加密秘钥和解密秘钥使用相同的秘钥(即加密和解密都必须使用同一个秘钥) 特点:一对一的双向保密通信(每一方既可用该秘钥加密,也可用该秘钥解密,非对称加密是多对一的单 ...