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提取html文件中的特定数据的实现代码
Mar 24 Python
python 合并文件的具体实例
Aug 08 Python
wxPython框架类和面板类的使用实例
Sep 28 Python
Python函数中的函数(闭包)用法实例
Mar 15 Python
python 利用栈和队列模拟递归的过程
May 29 Python
django解决跨域请求的问题详解
Jan 20 Python
python实现烟花小程序
Jan 30 Python
twilio python自动拨打电话,播放自定义mp3音频的方法
Aug 08 Python
Python搭建代理IP池实现存储IP的方法
Oct 27 Python
python 中不同包 类 方法 之间的调用详解
Mar 09 Python
Python在后台自动解压各种压缩文件的实现方法
Nov 10 Python
Django框架中视图的用法
Jun 10 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
smarty高级特性之过滤器的使用方法
2015/12/25 PHP
网页的分页下标生成代码(PHP后端方法)
2016/02/03 PHP
php仿微信红包分配算法的实现方法
2016/05/13 PHP
PHP使用自定义方法实现数组合并示例
2016/07/07 PHP
PHP如何防止XSS攻击与XSS攻击原理的讲解
2019/03/22 PHP
Using the TextRange Object
2006/10/14 Javascript
翻译整理的jQuery使用查询手册
2007/03/07 Javascript
js 创建书签小工具之理论
2011/02/25 Javascript
jquery在IE、FF浏览器的差别详细探讨
2013/04/28 Javascript
js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
2013/05/21 Javascript
JavaScript判断是否为数组的3种方法及效率比较
2015/04/01 Javascript
简化版手机端照片预览组件
2015/04/13 Javascript
Bootstrap文件上传组件之bootstrap fileinput
2016/11/25 Javascript
JavaScript利用正则表达式替换字符串中的内容
2016/12/12 Javascript
jQuery实现的checkbox级联选择下拉菜单效果示例
2016/12/26 Javascript
JavaScript中offsetWidth的bug及解决方法
2017/05/17 Javascript
通过jquery获取上传文件名称、类型和大小的实现代码
2018/04/19 jQuery
在vue中使用公共过滤器filter的方法
2018/06/26 Javascript
JavaScript执行环境及作用域链实例分析
2018/08/01 Javascript
解决Python requests 报错方法集锦
2017/03/19 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
2018/05/02 Python
python实现nao机器人身体躯干和腿部动作操作
2019/04/29 Python
python被修饰的函数消失问题解决(基于wraps函数)
2019/11/04 Python
python实现七段数码管和倒计时效果
2019/11/23 Python
pycharm双击无响应(打不开问题解决办法)
2020/01/10 Python
西安众合通用.net笔试题
2013/03/18 面试题
什么是索引指示器
2012/08/20 面试题
广告学专业毕业生自荐信
2013/09/24 职场文书
农业大学毕业生的个人自我评价
2013/10/11 职场文书
高一政治教学反思
2014/01/28 职场文书
满月酒主持词
2014/03/27 职场文书
文明工地标语
2014/06/16 职场文书
普宁寺导游词
2015/02/04 职场文书
卢旺达饭店观后感
2015/06/05 职场文书
2015年音乐教研组工作总结
2015/07/22 职场文书
致毕业季:你如何做好自己的职业生涯规划书?
2019/07/01 职场文书