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 相关文章推荐
Python标准库之多进程(multiprocessing包)介绍
Nov 25 Python
Python和GO语言实现的消息摘要算法示例
Mar 10 Python
python GUI实例学习
Nov 21 Python
深入理解Python 关于supper 的 用法和原理
Feb 28 Python
pthon贪吃蛇游戏详细代码
Jan 27 Python
Python的Tkinter点击按钮触发事件的例子
Jul 19 Python
Win10系统下安装labelme及json文件批量转化方法
Jul 30 Python
python requests库爬取豆瓣电视剧数据并保存到本地详解
Aug 10 Python
用Python生成HTML表格的方法示例
Mar 06 Python
快速了解Python开发环境Spyder
Jun 29 Python
Pandas中DataFrame交换列顺序的方法实现
Dec 14 Python
Jupyter notebook 输出部分显示不全的解决方案
Apr 24 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中使用gd库实现下载网页中所有图片
2015/05/12 PHP
ThinkPHP中图片按比例切割的代码实例
2019/03/08 PHP
PHP join()函数用法与实例讲解
2019/03/11 PHP
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
JavaScript 面向对象与原型
2015/04/10 Javascript
js 获取元素在页面上的偏移量的方法汇总
2015/04/13 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
jQuery Select下拉框操作小结(推荐)
2016/07/22 Javascript
微信小程序 action-sheet底部菜单详解
2016/10/27 Javascript
vue 2.x 中axios 封装的get 和post方法
2018/02/28 Javascript
JavaScript 正则命名分组【推荐】
2018/06/07 Javascript
jQuery实现获取form表单内容及绑定数据到form表单操作分析
2018/07/03 jQuery
Nuxt使用Vuex的方法示例
2019/09/06 Javascript
小程序实现上下切换位置
2020/11/16 Javascript
详解基于element的区间选择组件校验(交易金额)
2021/01/07 Javascript
javascript实现倒计时关闭广告
2021/02/09 Javascript
[02:28]DOTA2 2017国际邀请赛小组赛回顾
2017/08/09 DOTA
Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
2018/03/22 Python
python实现数据库跨服务器迁移
2018/04/12 Python
Python中XlsxWriter模块简介与用法分析
2018/04/24 Python
Python读取mat文件,并转为csv文件的实例
2018/07/04 Python
python实现五子棋小游戏
2020/03/25 Python
python解析xml简单示例
2019/06/21 Python
PyQt5实现QLineEdit添加clicked信号的方法
2019/06/25 Python
numpy.array 操作使用简单总结
2019/11/08 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
2020/03/10 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
2020/05/12 Python
Pygame框架实现飞机大战
2020/08/07 Python
Python爬虫之Selenium实现键盘事件
2020/12/04 Python
HTML5移动开发图片压缩上传功能
2016/11/09 HTML / CSS
HTML5 canvas实现雪花飘落特效
2016/03/08 HTML / CSS
医药工作岗位求职信分享
2013/12/31 职场文书
西北政法大学自主招生自荐信
2014/01/29 职场文书
解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
2021/06/26 MySQL
MySQL实现配置主从复制项目实践
2022/03/31 MySQL
如何通过一篇文章了解Python中的生成器
2022/04/02 Python