本文摘自php中文网,作者不言,侵删。
本篇文章给大家带来的内容是关于Python如何利用itertools.groupby() 根据字段将记录分组,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
1、需求
有一系列的字典或对象实例,我们想根据某个特定的字段来分组迭代数据。
2、解决方案
itertools.groupby()函数在对数据进行分组时特别有用。
实例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | from operator import itemgetter
from itertools import groupby
rows=[
{ 'name' : 'mark' , 'age' :18, 'uid' : '110' },
{ 'name' : 'miaomiao' , 'age' :28, 'uid' : '160' },
{ 'name' : 'miaomiao2' , 'age' :28, 'uid' : '150' },
{ 'name' : 'xiaohei' , 'age' :38, 'uid' : '130' },
]
#首先根据age排序
rows.sort(key=itemgetter( 'age' ))
for age,items in groupby(rows,key=itemgetter( 'age' )):
print (age)
for i in items:
print (i)
|
结果:
1 2 3 4 5 6 7 | 18
{ 'name' : 'mark' , 'age' : 18, 'uid' : '110' }
28
{ 'name' : 'miaomiao' , 'age' : 28, 'uid' : '160' }
{ 'name' : 'miaomiao2' , 'age' : 28, 'uid' : '150' }
38
{ 'name' : 'xiaohei' , 'age' : 38, 'uid' : '130' }
|
3、分析
python实现一键多值字典的方法实现
函数groupby()通过扫描序列找出拥有相同值(或是由参数key指定的函数所返回的值)的序列项,并将它们分组。groupby()创建了一个迭代器,而在每次迭代时都会返回一个值(value)和一个子迭代器(sub_iterator),这个迭代器可以产生所有在该分组内具有该值得项。
在这里重要的是首先要根据age对数据进行排序。因为groupby()不会排序。
如果只是简单的根据日期将数据分组到一起,放进一个大的数据结构中以允许进行随机访问,那么利用defaultdict()构建一个一键多值字典可能会更好:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | from collections import defaultdict
rows=[
{ 'name' : 'mark' , 'age' :18, 'uid' : '110' },
{ 'name' : 'miaomiao' , 'age' :28, 'uid' : '160' },
{ 'name' : 'miaomiao2' , 'age' :28, 'uid' : '150' },
{ 'name' : 'xiaohei' , 'age' :38, 'uid' : '130' },
]
rows_by_age=defaultdict(list)
for row in rows:
rows_by_age[row[ 'age' ]].append(row)
for a in rows_by_age[28]:
print (a)
|
结果:
1 2 | { 'name' : 'miaomiao' , 'age' : 28, 'uid' : '160' }
{ 'name' : 'miaomiao2' , 'age' : 28, 'uid' : '150' }
|
不考虑排序的话,defaultdict方法一般比groupby快。
以上就是Python如何利用itertools.groupby() 根据字段将记录分组的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
冒泡排序有哪2种写法,用冒泡排序对10个数进行排列
Python文件操作之合并文本文件内容方法介绍
Python pygame如何安装?详解Python pygame安装的教程实例
Python中常用字符串的操作(示例代码)
怎么用Python做网站
Python求n的阶乘
Python 编程开发 实用经验和技巧大放送
如何构建opencv和Python环境
用Python函数写斐波那契数列
Python解决n阶台阶走法问题的方法
更多相关阅读请进入《Python》频道 >>
人民邮电出版社
python入门书籍,非常畅销,超高好评,python官方公认好书。
转载请注明出处:木庄网络博客 » Python如何利用itertools.groupby() 根据字段将记录分组