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中比较运算符的使用
May 13 Python
python生成tensorflow输入输出的图像格式的方法
Feb 12 Python
Python实现爬虫爬取NBA数据功能示例
May 28 Python
python使用多进程的实例详解
Sep 19 Python
python模拟鼠标点击和键盘输入的操作
Aug 04 Python
FFrpc python客户端lib使用解析
Aug 24 Python
Python StringIO如何在内存中读写str
Jan 07 Python
使用python计算三角形的斜边例子
Apr 15 Python
无需压缩软件,用python帮你操作压缩包
Aug 17 Python
Django中使用Celery的方法步骤
Dec 07 Python
使用Python实现音频双通道分离
Dec 25 Python
python中PyQuery库用法分享
Jan 15 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
杏林同学录(八)
2006/10/09 PHP
php弹出对话框实现重定向代码
2014/01/23 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
2016/11/22 PHP
PHP基于IMAP收取邮件的方法示例
2017/08/07 PHP
php设计模式之装饰模式应用案例详解
2019/06/17 PHP
javascript在一段文字中的光标处插入其他文字
2007/08/26 Javascript
jQuery 各种浏览器下获得日期区别
2008/12/22 Javascript
7个Javascript地图脚本整理
2009/10/20 Javascript
js Form.elements[i]的使用实例
2011/11/13 Javascript
用JQuery在网页中实现分隔条功能的代码
2012/08/09 Javascript
javascript 获取网页标题代码实例
2014/01/22 Javascript
jQuery实现的动态伸缩导航菜单实例
2015/05/07 Javascript
JQuery标签页效果实例详解
2015/12/24 Javascript
分享我对JS插件开发的一些感想和心得
2016/02/04 Javascript
jQuery配合coin-slider插件制作幻灯片效果的流程解析
2016/05/13 Javascript
深入理解jquery中的事件与动画
2016/05/24 Javascript
JavaScript中两个字符串的匹配
2016/06/08 Javascript
JS+HTML5 FileReader对象用法示例
2017/04/07 Javascript
Vue 样式绑定的实现方法
2019/01/15 Javascript
小程序:授权、登录、session_key、unionId的详解
2019/05/15 Javascript
小程序绑定用户方案优化小结
2019/05/15 Javascript
JavaScript实现多层颜色选项卡嵌套
2020/09/21 Javascript
详解Python中用于计算指数的exp()方法
2015/05/14 Python
python xlsxwriter创建excel图表的方法
2018/06/11 Python
Python使用pymongo模块操作MongoDB的方法示例
2018/07/20 Python
深入浅析Python科学计算库Scipy及安装步骤
2019/10/12 Python
使用CSS3滤镜的filter:blur属性制作毛玻璃模糊效果的方法
2016/07/08 HTML / CSS
详解canvas.toDataURL()报错的解决方案全都在这了
2020/03/31 HTML / CSS
Belle Maison倍美丛官网:日本千趣会旗下邮购网站
2016/07/22 全球购物
美国女鞋品牌:naturalizer(娜然)
2016/08/01 全球购物
WatchShop法国:英国排名第一的独立手表零售商
2020/02/17 全球购物
成人大专自我鉴定范文
2013/10/19 职场文书
建材业务员岗位职责
2013/12/08 职场文书
个人求职信范文分享
2013/12/13 职场文书
幼儿园教师考核评语
2014/12/31 职场文书
毕业生自荐求职信书写的技巧
2019/08/26 职场文书