博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【python cookbook】【数据结构与算法】15.根据字段将记录分组
阅读量:4881 次
发布时间:2019-06-11

本文共 1888 字,大约阅读时间需要 6 分钟。

问题:想根据字典或者对象实例的某个特定的字典(比如日期)来分组迭代数据

解决方案: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 itemgetterfrom itertools import groupbyrows.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 multidictfrom collections import defaultdictrows_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)
>>> ================================ RESTART ================================>>> 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'}>>>

 

转载于:https://www.cnblogs.com/apple2016/p/5747395.html

你可能感兴趣的文章
flask页面中Head标签内容为空问题
查看>>
Centos7 Putty SSH密钥登录
查看>>
HDU 6330--Visual Cube(构造,计算)
查看>>
小说Symbian的签名
查看>>
Objective-C中ORM的运用:实体对象和字典的相互自动转换
查看>>
高级java面试宝典
查看>>
声明,本博客文章均为转载,只为学习,不为其他用途。感谢技术大牛的技术分享,让我少走弯路。...
查看>>
centos7.1下 Docker环境搭建
查看>>
c# 导出Excel
查看>>
Status: Checked in and viewable by authorized users 出现在sharepoint 2013 home 页面
查看>>
python数据预处理
查看>>
Python之路,Day21 - 常用算法学习
查看>>
Android安全-代码安全1-ProGuard混淆处理
查看>>
部署core
查看>>
mysql 时间设置
查看>>
如何在 Xcode 中修改应用的名字
查看>>
有关交换机——熟悉原理是必须的【转载】
查看>>
ACM(数学问题)——UVa202:输入整数a和b(0≤a≤3000,1≤b≤3000),输出a/b的循环小数表示以及循环节长度。...
查看>>
【转】Android 读取doc文件
查看>>
js 数据绑定
查看>>