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


本文摘自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》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...