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 调用DLL操作抄表机
Jan 12 Python
Python json模块dumps、loads操作示例
Sep 06 Python
一文带你了解Python中的字符串是什么
Nov 20 Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
Dec 18 Python
python实现石头剪刀布程序
Jan 20 Python
python使用wxpy轻松实现微信防撤回的方法
Feb 21 Python
python的pytest框架之命令行参数详解(上)
Jun 27 Python
Python正则表达式匹配数字和小数的方法
Jul 03 Python
Python面向对象之Web静态服务器
Sep 03 Python
Pytorch释放显存占用方式
Jan 13 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
Apr 11 Python
Python Switch Case三种实现方法代码实例
Jun 18 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
风味层面去分析咖啡油脂
2021/03/03 咖啡文化
php项目开发中用到的快速排序算法分析
2016/06/25 PHP
Autocomplete Textbox Example javascript实现自动完成成功
2007/08/17 Javascript
Javascript 继承机制实例
2009/08/12 Javascript
jquery 新手学习常见问题解决方法
2010/04/18 Javascript
jquery随意添加移除html的实现代码
2011/06/21 Javascript
幻灯片带网页设计中的20个奇妙应用示例小结
2012/05/27 Javascript
HTML上传控件取消选择
2013/03/06 Javascript
讲解JavaScript的Backbone.js框架的MVC结构设计理念
2016/02/14 Javascript
javascript HTML5文件上传FileReader API
2020/03/27 Javascript
JavaScript必知必会(七)js对象继承
2016/06/08 Javascript
jQuery ajax方法传递中文时出现中文乱码的解决方法
2016/07/25 Javascript
Angularjs中的ui-bootstrap的使用教程
2017/02/19 Javascript
jquery仿京东侧边栏导航效果
2017/03/02 Javascript
Nodejs中使用phantom将html转为pdf或图片格式的方法
2017/09/18 NodeJs
微信小程序有旋转动画效果的音乐组件实例代码
2018/08/22 Javascript
详解JavaScript中的强制类型转换
2019/04/15 Javascript
Vue组件为什么data必须是一个函数
2020/06/11 Javascript
Vue中keep-alive的两种应用方式
2020/07/15 Javascript
JavaScript this关键字的深入详解
2021/01/14 Javascript
[01:00:44]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第三局
2016/03/04 DOTA
[02:19]DOTA选手解说齐贺岁
2018/02/11 DOTA
python正则表达式的使用
2017/06/12 Python
一百多行python代码实现抢票助手
2018/09/25 Python
Django框架之DRF 基于mixins来封装的视图详解
2019/07/23 Python
Python Selenium安装及环境配置的实现
2020/03/17 Python
Pandas之read_csv()读取文件跳过报错行的解决
2020/04/21 Python
python pygame 愤怒的小鸟游戏示例代码
2021/02/25 Python
Bandier官网:奢侈、时尚前卫的健身服装首选目的地
2020/07/05 全球购物
Ruby如何创建一个线程
2013/03/10 面试题
花卉与景观设计系大学生求职信
2013/10/01 职场文书
十一酒店活动方案
2014/02/20 职场文书
反邪教标语
2014/06/23 职场文书
合同意向书范本
2014/07/30 职场文书
golang interface判断为空nil的实现代码
2021/04/24 Golang
Vue提供的三种调试方式你知道吗
2022/01/18 Vue.js