Python cookbook(数据结构与算法)根据字段将记录分组操作示例


Posted in Python onMarch 19, 2018

本文实例讲述了Python根据字段将记录分组操作。分享给大家供大家参考,具体如下:

问题:想根据字典或者对象实例的某个特定的字典(比如日期)来分组迭代数据

解决方案:itertools.groupby()函数在对数据进行分组时特别有用(前提是先以目标字典进行排序)

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 ADDISON', 'date': '07/02/2012'},
  {'address': '4801 N BROADWAY', 'date': '07/01/2012'},
  {'address': '1039 W GRANVILLE', 'date': '07/04/2012'},
]
from operator import itemgetter
from itertools import groupby
rows.sort(key=itemgetter('date')) #首先以date字段进行排序
for date, items in groupby(rows, key=itemgetter('date')): #再以date进行分组
  print(date)
  for i in items:
    print('  ', i)
# 如果只是简单地根据日期将数据分组到一起,放进一个大的数据结构中以允许进行随机访问,那么可以利用defaultdict构建一个一键多值的字典会更好
#Example of building a multidict
from collections import defaultdict
rows_by_date = defaultdict(list) #创建一个一键多值的字典,
for row in rows:
  rows_by_date[row['date']].append(row)
for r in rows_by_date['07/01/2012']:
  print(r)

运行结果:

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 ADDISON', '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'}
{'address': '5412 N CLARK', 'date': '07/01/2012'}
{'address': '4801 N BROADWAY', 'date': '07/01/2012'}

(代码摘自《Python Cookbook》)

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
pycharm 使用心得(三)Hello world!
Jun 05 Python
零基础写python爬虫之抓取百度贴吧代码分享
Nov 06 Python
Python实现的数据结构与算法之基本搜索详解
Apr 22 Python
python编程培训 python培训靠谱吗
Jan 17 Python
scrapy spider的几种爬取方式实例代码
Jan 25 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
Mar 30 Python
python 猴子补丁(monkey patch)
Jun 26 Python
在windows下使用python进行串口通讯的方法
Jul 02 Python
python多任务之协程的使用详解
Aug 26 Python
Python matplotlib图例放在外侧保存时显示不完整问题解决
Jul 28 Python
python tkinter实现定时关机
Apr 21 Python
教你如何使用Python实现二叉树结构及三种遍历
Jun 18 Python
遗传算法python版
Mar 19 #Python
python实现简单遗传算法
Mar 19 #Python
python psutil库安装教程
Mar 19 #Python
Python递归实现汉诺塔算法示例
Mar 19 #Python
Python实现替换文件中指定内容的方法
Mar 19 #Python
python书籍信息爬虫实例
Mar 19 #Python
python中字符串比较使用is、==和cmp()总结
Mar 18 #Python
You might like
PHP读写文件的方法(生成HTML)
2006/11/27 PHP
javascript 装载iframe子页面,自适应高度
2009/03/20 Javascript
prototype 学习笔记整理
2009/07/17 Javascript
学习ExtJS Window常用方法
2009/10/07 Javascript
jquery判断浏览器类型的代码
2012/11/05 Javascript
关于onchange事件在IE和FF下的表现及解决方法
2014/03/08 Javascript
JavaScript模块随意拖动示例代码
2014/05/27 Javascript
JavaScript实现的一个计算数字步数的算法分享
2014/12/06 Javascript
JavaScript实现向右伸出的多级网页菜单效果
2015/08/25 Javascript
JavaScript的React框架中的JSX语法学习入门教程
2016/03/05 Javascript
使用jquery获取url以及jquery获取url参数的实现方法
2016/05/25 Javascript
BOM系列第二篇之定时器requestAnimationFrame
2016/08/17 Javascript
jQuery中常用动画效果函数(日常整理)
2016/09/17 Javascript
jquery横向纵向鼠标滚轮全屏切换
2017/02/27 Javascript
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
2017/12/06 Javascript
微信小程序排坑指南详解
2018/05/23 Javascript
Koa代理Http请求的示例代码
2018/10/10 Javascript
Vuex 单状态库与多模块状态库详解
2018/12/11 Javascript
Python利用IPython提高开发效率
2016/08/10 Python
Python 统计字数的思路详解
2018/05/08 Python
对DataFrame数据中的重复行,利用groupby累加合并的方法详解
2019/01/30 Python
Python中py文件转换成exe可执行文件的方法
2019/06/14 Python
Python占用的内存优化教程
2019/07/28 Python
图解python全局变量与局部变量相关知识
2019/11/02 Python
pytorch 实现删除tensor中的指定行列
2020/01/13 Python
Selenium常见异常解析及解决方案示范
2020/04/10 Python
jupyter 使用Pillow包显示图像时inline显示方式
2020/04/24 Python
领班岗位职责范文
2014/02/06 职场文书
乡镇党委书记第三阶段个人整改措施
2014/09/16 职场文书
党的群众路线教育实践活动对照检查材料思想汇报(党员篇)
2014/09/25 职场文书
公司领导班子四风对照检查材料
2014/09/27 职场文书
2014年党建工作汇报材料
2014/10/27 职场文书
遗失说明具结保证书
2015/02/26 职场文书
歌剧魅影观后感
2015/06/05 职场文书
大学生社区义工服务心得体会
2016/01/22 职场文书
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
2021/06/08 Python