本文摘自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的pandas中常用函数的总结
Python中import如何使用
Python使用matplotlib实现的图像读取、切割裁剪功能示例
Python之包管理工具—pip的安装使用指南
详解Python的命名规则
win10怎么下载Python并安装
Python未来会进课本么
Python - 写代码时过长该如何解决?
Python招聘要求高吗
Python如何设置背景色
更多相关阅读请进入《Python》频道 >>
人民邮电出版社
python入门书籍,非常畅销,超高好评,python官方公认好书。
转载请注明出处:木庄网络博客 » Python如何利用itertools.groupby() 根据字段将记录分组