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中字典和JSON互转操作实例
Jan 19 Python
Python使用urllib2模块实现断点续传下载的方法
Jun 17 Python
python基础教程之Filter使用方法
Jan 17 Python
itchat接口使用示例
Oct 23 Python
python不换行之end=与逗号的意思及用途
Nov 21 Python
Python的iOS自动化打包实例代码
Nov 22 Python
Python异常处理例题整理
Jul 07 Python
Python + Requests + Unittest接口自动化测试实例分析
Dec 12 Python
Python实现计算长方形面积(带参数函数demo)
Jan 18 Python
python 错误处理 assert详解
Apr 20 Python
Python实现一个论文下载器的过程
Jan 18 Python
pandas统计重复值次数的方法实现
Feb 20 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 extract 将数组拆分成多个变量的函数
2010/06/30 PHP
CodeIgniter针对数据库的连接、配置及使用方法
2016/03/03 PHP
PHP书写格式详解(必看)
2016/05/23 PHP
Python中使用django form表单验证的方法
2017/01/16 PHP
php中上传文件的的解决方案
2018/09/25 PHP
jQuery对象与DOM对象之间的转换方法
2010/04/15 Javascript
JQuery index()方法使用代码
2010/06/02 Javascript
解决jQuery动态获取手机屏幕高和宽的问题
2014/05/07 Javascript
做web开发 先学JavaScript
2014/12/12 Javascript
JS命令模式例子之菜单程序
2016/10/10 Javascript
关于Stream和Buffer的相互转换详解
2017/07/26 Javascript
express框架实现基于Websocket建立的简易聊天室
2017/08/10 Javascript
微信用户访问小程序的登录过程详解
2019/09/20 Javascript
node.js制作一个简单的登录拦截器
2020/02/10 Javascript
jQuery事件模型默认行为执行顺序及trigger()与 triggerHandler()比较实例分析
2020/04/30 jQuery
基于原生js实现判断元素是否有指定class名
2020/07/11 Javascript
[01:45]DOTA2众星出演!DSPL刀塔次级职业联赛宣传片
2014/11/21 DOTA
[02:00]最后,我终于出了辉耀
2018/03/27 DOTA
[43:43]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第三场 11.29
2020/12/02 DOTA
Tensorflow卷积神经网络实例进阶
2018/05/24 Python
python3实现磁盘空间监控
2018/06/21 Python
Python Pexpect库的简单使用方法
2019/01/29 Python
Python脚本操作Excel实现批量替换功能
2019/11/20 Python
施华洛世奇水晶荷兰官方网站:SWAROVSKI荷兰
2017/05/12 全球购物
亚马逊中国官方网站:amazon.cn
2017/05/25 全球购物
戴森比利时官方网站:Dyson BE
2020/10/03 全球购物
升职自荐书范文
2013/11/28 职场文书
财经学院自荐信范文
2014/02/02 职场文书
工商干部先进事迹
2014/05/14 职场文书
公务员政审单位鉴定材料
2014/05/16 职场文书
优秀家长事迹材料
2014/05/17 职场文书
争先创优心得体会
2014/09/12 职场文书
2014年党员自我评议对照检查材料
2014/09/20 职场文书
党员民主生活会材料
2014/12/15 职场文书
JS继承最简单的理解方式
2021/03/31 Javascript
React Hook用法示例详解(6个常见hook)
2021/04/28 Javascript