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连接字符串的方法小结
Jul 13 Python
python 回调函数和回调方法的实现分析
Mar 23 Python
Python中Selenium模拟JQuery滑动解锁实例
Jul 26 Python
python实现图片处理和特征提取详解
Nov 13 Python
使用Python实现windows下的抓包与解析
Jan 15 Python
python爬虫获取淘宝天猫商品详细参数
Jun 23 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
May 30 Python
Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】
Apr 26 Python
Python PIL读取的图像发生自动旋转的实现方法
Jul 05 Python
如何基于Python代码实现高精度免费OCR工具
Jun 18 Python
Jmeter HTTPS接口测试证书导入过程图解
Jul 22 Python
详解用python -m http.server搭一个简易的本地局域网
Sep 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
《魔兽争霸3:重制版》翻车了?你想要的我们都没有
2019/11/07 魔兽争霸
PHP 高手之路(一)
2006/10/09 PHP
php 特殊字符处理函数
2008/09/05 PHP
javascript 对象定义方法 简单易学
2009/03/22 Javascript
从jQuery.camelCase()学习string.replace() 函数学习
2011/09/13 Javascript
jquery获取select选中值的方法分析
2015/12/22 Javascript
轻松实现jquery手风琴效果
2016/01/14 Javascript
JS 面向对象之继承---多种组合继承详解
2016/07/10 Javascript
Vue概念及常见命令介绍(1)
2016/12/08 Javascript
Vue.js bootstrap前端实现分页和排序
2017/03/10 Javascript
详解node服务器中打开html文件的两种方法
2017/09/18 Javascript
AngularJS实现图片上传和预览功能的方法分析
2017/11/08 Javascript
基于node简单实现RSA加解密的方法步骤
2019/03/21 Javascript
Ant Design moment对象和字符串之间的相互转化教程
2020/10/27 Javascript
JS如何监听div的resize事件详解
2020/12/03 Javascript
python实现用户答题功能
2018/01/17 Python
python实现csv格式文件转为asc格式文件的方法
2018/03/23 Python
python简单实现矩阵的乘,加,转置和逆运算示例
2019/07/10 Python
解决win7操作系统Python3.7.1安装后启动提示缺少.dll文件问题
2019/07/15 Python
Spring Boot中使用IntelliJ IDEA插件EasyCode一键生成代码详细方法
2020/03/20 Python
使用Python-OpenCV消除图像中孤立的小区域操作
2020/07/05 Python
Visual Studio code 配置Python开发环境
2020/09/11 Python
HTML5 Web Workers之网站也能多线程的实现
2013/04/24 HTML / CSS
贝玲妃美国官方网站:Benefit美国
2016/08/28 全球购物
斯凯奇澳大利亚官网:SKECHERS澳大利亚
2018/03/31 全球购物
英文自我鉴定
2013/12/10 职场文书
失业者真诚求职信范文
2013/12/25 职场文书
中学生运动会通讯稿大全
2014/09/18 职场文书
工商局副局长个人对照检查材料
2014/09/25 职场文书
考研复习计划
2015/01/19 职场文书
幼儿教师师德师风自我评价
2015/03/05 职场文书
社区公民道德宣传日活动总结
2015/03/23 职场文书
感恩节寄语2015
2015/03/24 职场文书
小学体育课教学反思
2016/02/16 职场文书
K8s部署发布Golang应用程序的实现方法
2021/07/16 Golang
CentOS7安装GlusterFS集群以及相关配置
2022/04/12 Servers