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)的更多相关文章

  1. Atitit  数据存储的分组聚合 groupby的实现attilax总结

    Atitit  数据存储的分组聚合 groupby的实现attilax总结 1. 聚合操作1 1.1. a.标量聚合 流聚合1 1.2. b.哈希聚合2 1.3. 所有的最优计划的选择都是基于现有统计 ...

  2. pandas聚合和分组运算——GroupBy技术(1)

    数据聚合与分组运算——GroupBy技术(1),有需要的朋友可以参考下. pandas提供了一个灵活高效的groupby功能,它使你能以一种自然的方式对数据集进行切片.切块.摘要等操作.根据一个或多个 ...

  3. [转]详解Oracle高级分组函数(ROLLUP, CUBE, GROUPING SETS)

    原文地址:http://blog.csdn.net/u014558001/article/details/42387929 本文主要讲解 ROLLUP, CUBE, GROUPING SETS的主要用 ...

  4. Pandas分组(GroupBy)

    任何分组(groupby)操作都涉及原始对象的以下操作之一.它们是 - 分割对象 应用一个函数 结合的结果 在许多情况下,我们将数据分成多个集合,并在每个子集上应用一些函数.在应用函数中,可以执行以下 ...

  5. Oracle - 查询语句 - 分组函数

    /* 分组函数 不能再select子句中出现普通的列,除非这个列在group by中给出 所有的空值都会被分为一组 分组过滤 SELECT FROM WHERE GROUPBY HAVING ORDE ...

  6. oracle(sql)基础篇系列(一)——基础select语句、常用sql函数、组函数、分组函数

        花点时间整理下sql基础,温故而知新.文章的demo来自oracle自带的dept,emp,salgrade三张表.解锁scott用户,使用scott用户登录就可以看到自带的表. #使用ora ...

  7. Oracle_SQL函数-分组函数

    分组函数 什么是分组函数 分组函数作用于一组数据,并对一组数据返回一个值 组函数类型:主要有6种 AVG - 平均 COUNT - 计数 MAX - 最大 MIN - 最小 SUM - 求和 STDD ...

  8. oracle 10g 学习之多表查询、分组函数(6)

    笛卡尔集 l  笛卡尔集会在下面条件下产生: 省略连接条件 连接条件无效 所有表中的所有行互相连接 l  为了避免笛卡尔集, 可以在 WHERE 加入有效的连接条件. 自连接 select m.las ...

  9. 常用分组函数count-avg-sum-max-min

    分组函数也称多行函数,用于对一组数据进行运算,针对一组数据(取自于多行记录的相同字段)只返回一个结果,例如计算公司全体员工的工资总和.最高工资.最低工资.各部门的员工平均工资(按部门分组)等.由于分组 ...

  10. ORA-00937:不是单组分组函数_Oracle

    Demo: SELECT USER_ID, USER_NAME, USER_SEX, MAX(USER_AGE), SUM(USER_MONEY) AS USER_MONEY USER_TEL, US ...

随机推荐

  1. haproxy高可用、负载均衡集群

    HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.根据官方数据,其最高极限支持10G的并发.另外其支持从4层至7层的网络交换, ...

  2. 123457123457#0#----com.MC.konglongtianse222----前拼后广--恐龙填色mc-mc1111

    com.MC.konglongtianse222----前拼后广--恐龙填色mc

  3. GNU C之__attribute__

    __attribute__可以设置函数属性(Function Attribute).变量属性(Variable Attribute)和类型属性(Type Attribute) __attribute_ ...

  4. MySQL普通索引性能试验

    首先使用如下node.js脚本创建两张表,并为这两张表各自生成10000条数据: var fs = require('fs'); var nameS = "赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱 ...

  5. Python 的包管理工具 distribute, setuptools, easy_install命令与 pip命令

    Setuptools 是 Python Enterprise Application Kit (PEAK)的一个副项目,它是 Python 的disutils工具的增强工具,可以让程序员更方便地创建和 ...

  6. 代理工具WebScarab安装(转载)

    原文地址:https://blog.csdn.net/shiyuqing1207/article/details/46428443 2015年06月09日 16:31:52 shiyuqing1207 ...

  7. Asp.Net Core Identity中基于角色授权

    我们已经在之前介绍了简单的授权是在Controller或Action上添加属性Authorize来实现,那角色授权是在指定Authorize的同时指定Roles参数. 我们来看看基于角色访问的三种方式 ...

  8. 通用mybatis单表操作接口

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "- ...

  9. c#序列化基类(包含派生类继承DynamicObject和 IXmlSerializable)对象

    直接上代码 using System.Diagnostics; using System.Text; using System.Xml; using System.Xml.Schema; using ...

  10. PAT(B) 1031 查验身份证(Java)

    题目链接:1031 查验身份证 (15 point(s)) 题目描述 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配 ...