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小程序
Aug 15 Python
python创建列表并给列表赋初始值的方法
Jul 28 Python
Python基于列表模拟堆栈和队列功能示例
Jan 05 Python
Python3实现腾讯云OCR识别
Nov 27 Python
详解用python写一个抽奖程序
May 10 Python
python 消费 kafka 数据教程
Dec 21 Python
Python Tkinter Entry和Text的添加与使用详解
Mar 04 Python
Python3如何判断三角形的类型
Apr 12 Python
Python切片列表字符串如何实现切换
Aug 06 Python
基于Django快速集成Echarts代码示例
Dec 01 Python
将不规则的Python多维数组拉平到一维的方法实现
Jan 11 Python
聊聊基于pytorch实现Resnet对本地数据集的训练问题
Mar 25 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
关于PHP5 Session生命周期介绍
2010/03/02 PHP
php目录操作实例代码
2014/02/21 PHP
为你总结一些php信息函数
2015/10/21 PHP
WordPress开发中短代码的实现及相关函数使用技巧
2016/01/05 PHP
基于CI(CodeIgniter)框架实现购物车功能的方法
2018/04/09 PHP
javascript将浮点数转换成整数的三个方法
2014/06/23 Javascript
bootstrap table 服务器端分页例子分享
2015/02/10 Javascript
js实现简单的可切换选项卡效果
2015/04/10 Javascript
ionic js 模型 $ionicModal 可以遮住用户主界面的内容框
2016/06/06 Javascript
原生js实现放大镜特效
2017/03/08 Javascript
JS实现含有中文字符串的友好截取功能分析
2017/03/13 Javascript
Vuex之理解Mutations的用法实例
2017/04/19 Javascript
Vue动画事件详解及过渡动画实例
2019/02/09 Javascript
微信小程序开发之点击按钮退出小程序的实现方法
2019/04/26 Javascript
使用JS实现动态时钟
2020/03/12 Javascript
[02:22]2018DOTA2亚洲邀请赛VG赛前采访
2018/04/03 DOTA
浅谈Python实现贪心算法与活动安排问题
2017/12/19 Python
Python面向对象之类和对象属性的增删改查操作示例
2018/12/14 Python
python爬取微信公众号文章的方法
2019/02/26 Python
python调用摄像头拍摄数据集
2019/06/01 Python
详解pytorch 0.4.0迁移指南
2019/06/16 Python
关于pytorch中全连接神经网络搭建两种模式详解
2020/01/14 Python
python 两种方法修改文件的创建时间、修改时间、访问时间
2020/09/26 Python
CSS3 transform的skew属性值图文详解
2014/07/21 HTML / CSS
Html5导航栏吸顶方案原理与对比实现
2020/06/10 HTML / CSS
伦敦所有西区剧院演出官方票务代理:Theatre Tickets Direct
2017/05/26 全球购物
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
销售工作人员的自我评价分享
2013/11/10 职场文书
实习生个人的自我评价
2013/12/08 职场文书
美国旅游签证工作证明
2014/10/14 职场文书
招商引资工作汇报
2014/10/28 职场文书
不尊敬老师检讨书范文
2014/11/19 职场文书
农村结婚典礼主持词
2015/06/29 职场文书
户外拓展训练感想
2015/08/07 职场文书
给校长的建议书作文400字
2015/09/14 职场文书
《地震中的父与子》教学反思
2016/02/16 职场文书