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中的实例方法、静态方法、类方法、类变量和实例变量浅析
Apr 26 Python
Python基于matplotlib实现绘制三维图形功能示例
Jan 18 Python
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
Jan 24 Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
Nov 07 Python
解决Python一行输出不显示的问题
Dec 03 Python
对json字符串与python字符串的不同之处详解
Dec 19 Python
Python模块的加载讲解
Jan 15 Python
Python视频编辑库MoviePy的使用
Apr 01 Python
python如何更新包
Jun 11 Python
MoviePy简介及Python视频剪辑自动化
Dec 18 Python
Pytorch GPU内存占用很高,但是利用率很低如何解决
Jun 01 Python
详解Python为什么不用设计模式
Jun 24 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网页病毒清除类
2014/12/08 PHP
PHP 接入支付宝即时到账功能
2016/09/18 PHP
php中strtotime函数性能分析
2016/11/20 PHP
用JavaScript实现PHP的urlencode与urldecode函数
2015/08/13 Javascript
JS实现Select的option上下移动的方法
2016/03/01 Javascript
angularjs实现文字上下无缝滚动特效代码
2016/09/04 Javascript
jQuery+ajax读取并解析XML文件的方法
2016/09/09 Javascript
jQuery实现背景滑动菜单
2016/12/02 Javascript
vue项目中使用lib-flexible解决移动端适配的问题解决
2018/08/23 Javascript
小程序实现授权登陆的解决方案
2018/12/02 Javascript
jQuery zTree插件使用简单教程
2019/08/16 jQuery
基于Vue中使用节流Lodash throttle详解
2019/10/30 Javascript
详解JavaScript中精度失准问题及解决方法
2020/02/04 Javascript
如何在JavaScript中使用localStorage详情
2021/02/04 Javascript
[06:15]2016国际邀请赛中国区预选赛单车采访:我顶WINGS
2016/06/27 DOTA
[50:27]OG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/30 DOTA
[58:54]EG vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
图文详解WinPE下安装Python
2016/05/17 Python
对python制作自己的数据集实例讲解
2018/12/12 Python
python requests post多层字典的方法
2018/12/27 Python
Tensorflow训练MNIST手写数字识别模型
2020/02/13 Python
python用pip install时安装失败的一系列问题及解决方法
2020/02/24 Python
用html5实现语音搜索框的方法
2014/03/18 HTML / CSS
美国知名保健品网站:LuckyVitamin(支持中文)
2017/08/09 全球购物
expedia比利时:预订航班+酒店并省钱
2018/07/13 全球购物
平面设计自荐信
2013/10/07 职场文书
兰兰过桥教学反思
2014/02/08 职场文书
中学生励志演讲稿
2014/04/26 职场文书
大学奖学金获奖感言
2014/08/15 职场文书
群众路线教育实践活动整改落实情况汇报
2014/10/28 职场文书
起诉意见书范文
2015/05/19 职场文书
中小学生安全教育观后感
2015/06/17 职场文书
五一晚会主持词
2015/07/01 职场文书
忠诚教育学习心得体会
2016/01/23 职场文书
CSS 文字装饰 text-decoration & text-emphasis 详解
2021/04/06 HTML / CSS
spring 项目实现限流方法示例
2022/07/15 Java/Android