分组函数(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 ...
随机推荐
- pytorch 中Dataloader中的collate_fn参数
一般的,默认的collate_fn函数是要求一个batch中的图片都具有相同size(因为要做stack操作),当一个batch中的图片大小都不同时,可以使用自定义的collate_fn函数,则一个b ...
- 【Leetcode_easy】1071. Greatest Common Divisor of Strings
problem 1071. Greatest Common Divisor of Strings solution class Solution { public: string gcdOfStrin ...
- 【Leetcode_easy】944. Delete Columns to Make Sorted
problem 944. Delete Columns to Make Sorted 题意:其实题意很简单,但是题目的description给整糊涂啦...直接看题目标题即可理解. solution: ...
- Java基础教程:多线程基础(5)——倒计时器(CountDownLatch)
Java基础教程:多线程基础(5)——倒计时器(CountDownLatch) 引入倒计时器 在多线程协作完成业务功能时,有时候需要等待其他多个线程完成任务之后,主线程才能继续往下执行业务功能,在这种 ...
- centos7下使用yum安装mysql5.7.10
原文地址:http://www.mamicode.com/info-detail-503994.html CentOS7的yum源中默认好像是没有mysql的.为了解决这个问题,我们要先下载mysql ...
- [WinForm] - 关闭应用时 "has stopped working" 之解决
背景 关闭 WinForm 应用出现 "has stopped working" 错误. Windows 日志 Faulting application name: PcClien ...
- [DevExpress] - 使得 XtraEditors.TextEdit 失去焦点(LostFocus)的方法
场景 WinForm 应用,使用了 DevExpress.XtraEditors.TextEdit 控件的 KeyPress 和 Leave 事件.期望在 TextEdit 上按下回车键或者当 Tex ...
- python---pth包路径
为依赖包添加环境变量 (这一步很关键)PYTHONPATH C:\tensorflow\models\research;C:\tensorflow\models\research\slim6.然后并没 ...
- 考试应对(Java语法速览)
1.从命令行输入数据 格式:Scanner reader=new Scanner(System.in); 此reader对象可以使用的方法:nextBoolean(),nextByte(),nextS ...
- 面试题之web访问突然延迟问题
前言 面试官经常会问平时访问正常的网页突然变慢是什么原因引起的,说明下你排查的思路:我认为这种问题很能考察一个人的综合知识面,既能融通的贯彻知识点,也能展看对每个知识点进行详细的考问. 下面我按我自己 ...