python itertools groubpy 实例

本文介绍了Python中itertools模块的groupby函数用法,通过两个示例展示了如何根据列表中的特定元素对数据进行分组。第一个示例根据日期对记录进行分组;第二个示例则进一步根据日期和名称进行更详细的分组。
摘要由CSDN通过智能技术生成

groupby(iterable [,key]):

创建一个迭代器,对iterable生成的连续项进行分组,在分组过程中会查找重复项。

如果iterable在多次连续迭代中生成了同一项,则会定义一个组,如果将此函数应用一个分类列表,那么分组将定义该列表中的所有唯一项,key(如果已提供)是一个函数,应用于每一项,如果此函数存在返回值,该值将用于后续项而不是该项本身进行比较,此函数返回的迭代器生成元素(key, group),其中key是分组的键值,group是迭代器,生成组成该组的所有项。

an example:

 

from itertools import groupby
from operator import itemgetter

things =[('2009-09-02', 'mars', 1, 11),
          ('2009-09-02', 'mars', 1, 3),
          ('2009-09-03', 'ma', 2, 10),
          ('2009-09-03', 'ma', 2, 4),
          ('2009-09-03', 'ma', 2, 22),
          ('2009-09-06', 'm', 3, 33)]

for key, items in groupby(things, itemgetter(0)):
    print key
    for subitem in items:
        print subitem
    print '-' * 20

 The output looks like:

 

2009-09-02
('2009-09-02', 'mars, 11)
('2009-09-02', 'mars', 3)
--------------------
2009-09-03
('2009-09-03', 'ma', 10)
('2009-09-03', 'ma', 4)
('2009-09-03', 'ma', 22)
--------------------
2009-09-06
('2009-09-06', 'm', 33)
-------------------

another example:
key_func = lambda t: (t[0], t[1])
for key, items in groupby(things, key_func) :
    print key
    for subitem in items:
        print subitem
    print '-' * 20
 output:
('2009-09-02', 'mars')
('2009-09-02', 'mars, 11)
('2009-09-02', 'mars', 3)
--------------------
('2009-09-03', 'ma')
('2009-09-03', 'ma', 10)
('2009-09-03', 'ma', 4)
('2009-09-03', 'ma', 22)
--------------------
('2009-09-06', 'm')
('2009-09-06', 'm', 33)
-------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值