本文摘自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() 根据字段将记录分组的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
关于Python中legb与闭包以及装饰器的具体讲解
Python 为什么不支持 switch 语句?
Python使用struct处理二进制的方法详解
Python file seek() 方法是什么?怎么理解并使用它?
Python3怎么安装库
Python read lines() 有什么用?能用在什么地方?
Python对金融有用吗
Python可以做网站吗
Python怎么导入模块
Python dict怎么实现的
更多相关阅读请进入《Python》频道 >>
人民邮电出版社
python入门书籍,非常畅销,超高好评,python官方公认好书。
转载请注明出处:木庄网络博客 » Python如何利用itertools.groupby() 根据字段将记录分组