最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Python如何利用itertools.groupby()根据字段将记录分组

来源:动视网 责编:小采 时间:2020-11-27 14:20:44
文档

Python如何利用itertools.groupby()根据字段将记录分组

Python如何利用itertools.groupby()根据字段将记录分组:本篇文章给大家带来的内容是关于Python如何利用itertools.groupby() 根据字段将记录分组,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。1、需求有一系列的字典或对象实例,我们想根据某个特定的字段来分组迭代数据。2、解决方案iter
推荐度:
导读Python如何利用itertools.groupby()根据字段将记录分组:本篇文章给大家带来的内容是关于Python如何利用itertools.groupby() 根据字段将记录分组,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。1、需求有一系列的字典或对象实例,我们想根据某个特定的字段来分组迭代数据。2、解决方案iter


本篇文章给大家带来的内容是关于Python如何利用itertools.groupby() 根据字段将记录分组,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

1、需求

有一系列的字典或对象实例,我们想根据某个特定的字段来分组迭代数据。

2、解决方案

itertools.groupby()函数在对数据进行分组时特别有用。

实例:

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)

结果:

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()构建一个一键多值字典可能会更好:

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)

结果:

{'name': 'miaomiao', 'age': 28, 'uid': '160'}
{'name': 'miaomiao2', 'age': 28, 'uid': '150'}

不考虑排序的话,defaultdict方法一般比groupby快。

文档

Python如何利用itertools.groupby()根据字段将记录分组

Python如何利用itertools.groupby()根据字段将记录分组:本篇文章给大家带来的内容是关于Python如何利用itertools.groupby() 根据字段将记录分组,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。1、需求有一系列的字典或对象实例,我们想根据某个特定的字段来分组迭代数据。2、解决方案iter
推荐度:
标签: 怎么样 分组 使用
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top