需求:

当前有个字典实例,你想以某个字段比如”日期”对整个字典里面的元素进行分组。

方法:

itertools.groupby()函数是专门用来干这个活的。请看下面这个例子,这里有一个列表构成的字典,你想按照日期来对列表进行分组,可以这么做:

In [42]: from operator import itemgetter

In [43]: from itertools import groupby

In [44]: rows = [

...: {'address' : '5412 N CLARK', 'date' : '07/01/2012'},

...: {'address' : '5148 N CLARK', 'date' : '07/04/2012'},

...: {'address' : '5800 E 58TH', 'date' : '07/02/2012'},

...: {'address' : '2122 N CLARK', 'date' : '07/03/2012'},

...: {'address' : '5645 N RAVENSWOOD', 'date' : '07/02/2012'},

...: {'address' : '1060 W ADDISION', 'date' : '07/02/2012'},

...: {'address' : '4801 N BROADWAY', 'date' : '07/01/2012'},

...: {'address' : '1039 W GRANVILLE', 'date' : '07/04/2012'}

...: ]

In [45]: rows.sort(key=itemgetter('date'))

In [46]: for date, items in groupby(rows, key=itemgetter('date')):

...: print(date)

...: for i in items:

...: print(' ', i)

...:

07/01/2012

{'address': '5412 N CLARK', 'date': '07/01/2012'}

{'address': '4801 N BROADWAY', 'date': '07/01/2012'}

07/02/2012

{'address': '5800 E 58TH', 'date': '07/02/2012'}

{'address': '5645 N RAVENSWOOD', 'date': '07/02/2012'}

{'address': '1060 W ADDISION', 'date': '07/02/2012'}

07/03/2012

{'address': '2122 N CLARK', 'date': '07/03/2012'}

07/04/2012

{'address': '5148 N CLARK', 'date': '07/04/2012'}

{'address': '1039 W GRANVILLE', 'date': '07/04/2012'}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

扩展:

实用groupby()函数前,必须对相应的要分组的字段进行排序,因为他只能对有序数据进行分组。如果你仅仅只是想针对日期进行分组并且允许随机获取,那可能更好的方法是实用defaultdict()先产生一个多维字典,例如:

In [48]: from collections import defaultdict

In [49]: rows_by_date = defaultdict(list)

In [50]: for row in rows:

...: rows_by_date[row['date']].append(row)

...:

In [51]: for r in rows_by_date['07/01/2012']:

...: print(r)

...:

{'address': '5412 N CLARK', 'date': '07/01/2012'}

{'address': '4801 N BROADWAY', 'date': '07/01/2012'}

对于这个例子,并不需要先对记录进行排序。因此如果不需要考虑内存,用这个方法比用groupby()要快得多。

————————————————

python数组随机分组_Python实用黑科技——以某个字段进行分组相关推荐

  1. 缺氧游戏黑科技计算机,缺氧实用黑科技研究分享

    缺氧实用黑科技研究分享 2017-07-18 来源:游侠 作者:未知 缺氧随着温度与植物机制变化,生存变得越来越不易,而在游戏中除了常规的玩法之外,还有些实用的黑科技能帮大家轻松生存,今天小编就为大家 ...

  2. 使用华为手机!不知道这5个实用黑科技,几千块钱就白花了

    国产手机要说谁的用户最多,那肯定就是华为了,很多小伙伴换机第一选择就是华为手机. 但使用华为手机!不知道这5个实用黑科技,那就几千块钱都白花了. 一.实用黑科技 1.手机克隆 如何快速将旧手机的数据转 ...

  3. python学到了什么_Python这个黑科技,后悔没有早点学起来!

    前段时间听说了一件事,彻底刷新了我对"黑科技"的认知. 有一个96年的小学弟,大学4年混得风生水起,恋爱.赚钱.写论文.找工作,样样都很顺利,简直是妥妥的人生赢家. 问他凭什么?张 ...

  4. python数组数字求和_python数组求和

    Pandas是Python的一个大数据处理模块.Pandas使用一个二维的数据结构DataFrame来表示表格式的数据,相比较于Numpy,Pandas可以存储混合的数据结构,同时使用NaN来表示缺失 ...

  5. python可以实现什么黑科技_实用黑科技!利用python给手机发短信

    之前告诉大家使用python可以应用于很多场景,除了大家所知道的,今天给大家带来一个特别好玩的事情,就是能用python去发短信,赶紧看下文吧~ 准备工作内容: SDK AppID.App Key.应 ...

  6. python刷票 黑科技_python 爬虫 黑科技

    1.最基本的抓站 importurllib2 content= urllib2.urlopen('http://XXXX').read() 2.使用代理服务器 这在某些情况下比较有用,比如IP被封了, ...

  7. python数组求和函数_python数据分析之Numpy数据库第三期数组的运算

    上期数组的索引和切片的知识总结通道:数组的索引和切片 数组和标量间的运算 数组之所以强大而且重要的原因,是其不需要通过循环就可以完成批量计算,也就是矢量化 import numpy as np a = ...

  8. python数组追加值_python数组追加

    记linux shell的两个小技巧:shell数组和字符串判断 最近在使用shell写脚本的时候,想实现python中两个很简单的功能:1:判断一个字符串是否包含另一个字符串.2:怎么用实现pyth ...

  9. python概率随机抽奖_Python利用带权重随机数解决抽奖和游戏爆装备

    关于带权随机数 为了帮助理解,先来看三类随机问题的对比: 1.已有n条记录,从中选取m条记录,选取出来的记录前后顺序不管. 实现思路:按行遍历所有记录,约隔n/m条取一个数据即可 2.在1类情况下,还 ...

最新文章

  1. CSS3实战开发:使用CSS3实现photoshop的过滤效果
  2. 【Windows10下OpenCV 3.4.0 + Visual Studio 2015开发环境的配】
  3. ITK:关闭二进制图像
  4. delphi VCL研究之消息分发机制(转)
  5. 正则表达式不包含某个字符串_JMeter必知必会系列(18) JMeter正则表达式提取器疑难分析...
  6. 金蝶发布2021年财报:云业务同比增44.2%,继续加码研发技术创新
  7. 添加rabbitmq守护进程
  8. PostgreSQL监控指标
  9. 最新前端中高级面试题
  10. log4net 不生成日志文件的解决办法
  11. C++ 引用 支持多级嵌套吗
  12. 昆石VOS2009/VOS3000 2.1.6.00 新功能介绍目录
  13. 目标规划运筹学例题doc_第八章 运筹学 目标规划 案例.doc
  14. yarn的安装及使用教程
  15. 微信公众号模板消息推送,中文乱码
  16. 原型工具Axure:Axure的实用小技巧
  17. 如何降低图片kb大小?教你两个快速压缩图片大小的方法!
  18. SSD掉电保护也是一门艺术
  19. xp无法访问2012r2域计算机列表,新安装Windows 2012域控无法没有自动创建Sysvol netlogon共享--钉子-Exchange MVP...
  20. macOS开发入门教程 : Part 2

热门文章

  1. python横坐标如何显示为月份_如何显示给定两个日期之间的所有月份?
  2. 矢量合成和分解的法则_重点解析丨抛体运动 之 运动的合成与分解
  3. 八年级下册册计算机计划,粤教版(B版)信息技术八年级下册教学工作计划
  4. Java基础day23
  5. Java基础day2
  6. 趣学python3(1)-f前缀格式化字符串文本
  7. .net随笔-vb.net打开外部程序发送键盘信号(3)
  8. 【机器学习】小数据集怎么上分? 几行代码生成伪标签数据集
  9. 【NLP】完全解析!Bert Transformer 阅读理解源码详解
  10. 【限时】推荐算法工程师培养计划