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中字符串前面加r的作用
Jun 04 Python
Python爬虫常用库的安装及其环境配置
Sep 19 Python
python 将对象设置为可迭代的两种实现方法
Jan 21 Python
Python3模拟登录操作实例分析
Mar 12 Python
详解Python字符串切片
May 20 Python
Python格式化字符串f-string概览(小结)
Jun 18 Python
python找出因数与质因数的方法
Jul 25 Python
详解Python 字符串相似性的几种度量方法
Aug 29 Python
python 和c++实现旋转矩阵到欧拉角的变换方式
Dec 04 Python
将python依赖包打包成window下可执行文件bat方式
Dec 26 Python
python 串行执行和并行执行实例
Apr 30 Python
Python爬虫回测股票的实例讲解
Jan 22 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
ThinkPHP做文字水印时提示call an undefined function exif_imagetype()解决方法
2014/10/30 PHP
使用新浪微博API的OAuth认证发布微博实例
2015/03/27 PHP
PHP生成指定随机字符串的简单实现方法
2015/04/01 PHP
一键生成各种尺寸Icon的php脚本(实例)
2017/02/08 PHP
thinkPHP+mysql+ajax实现的仿百度一下即时搜索效果详解
2019/07/15 PHP
prototype class详解
2006/09/07 Javascript
文本框的字数限制功能jquery插件
2009/11/24 Javascript
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(上:事件篇)
2010/03/24 Javascript
jQuery EasyUI 开源插件套装 完全替代ExtJS
2010/03/24 Javascript
无缝滚动js代码通俗易懂(自写)
2013/06/19 Javascript
jquery内置验证(validate)使用方法示例(表单验证)
2013/12/04 Javascript
js 验证身份证信息有效性
2014/03/28 Javascript
Backbone.js中的集合详解
2015/01/14 Javascript
JS获取一个未知DIV高度的方法
2016/08/09 Javascript
js 将图片连接转换成base64格式的简单实例
2016/08/10 Javascript
vue脚手架中配置Sass的方法
2018/01/04 Javascript
简单说说angular.json文件的使用
2018/10/29 Javascript
PM2自动部署代码步骤流程总结
2018/12/10 Javascript
JavaScript数组去重的方法总结【12种方法,号称史上最全】
2019/02/28 Javascript
vue 路由缓存 路由嵌套 路由守卫 监听物理返回操作
2020/08/06 Javascript
Python使用QQ邮箱发送Email的方法实例
2017/02/09 Python
Python使用matplotlib绘制随机漫步图
2018/08/27 Python
Python自动化完成tb喵币任务的操作方法
2019/10/30 Python
TensorFlow查看输入节点和输出节点名称方式
2020/01/04 Python
怀旧香味蜡烛:Homesick
2019/11/02 全球购物
介绍下java.util.Arrays类
2012/10/16 面试题
简短证婚人证婚词
2014/01/09 职场文书
买房委托公证书
2014/04/08 职场文书
文明寄语大全
2014/04/11 职场文书
学习雷锋活动总结
2014/04/29 职场文书
护理实习生带教计划
2015/01/16 职场文书
董存瑞观后感
2015/06/11 职场文书
2016年暑期教师培训心得体会
2016/01/09 职场文书
经销商会议开幕词
2016/03/04 职场文书
将Python代码打包成.exe可执行文件的完整步骤
2021/05/12 Python
Python开发五子棋小游戏
2022/04/28 Python