python中itertools groupby函数_如何使用Python的itertools.groupby()?

正如Sebastjan所说,你首先必须排序你的数据。这个很重要。

我没有得到的部分是在示例中的结构

groups = []

uniquekeys = []

for k, g in groupby(data, keyfunc):

groups.append(list(g)) # Store group iterator as a list

uniquekeys.append(k)

k是当前分组键,g是迭代器,您可以使用它迭代由该分组键定义的组。换句话说,groupby迭代器本身返回迭代器。

这里有一个例子,使用更清晰的变量名:

from itertools import groupby

things = [("animal", "bear"), ("animal", "duck"), ("plant", "cactus"), ("vehicle", "speed boat"), ("vehicle", "school bus")]

for key, group in groupby(things, lambda x: x[0]):

for thing in group:

print "A %s is a %s." % (thing[1], key)

print " "

这将给你输出:

A bear is a animal.

A duck is a animal.

A cactus is a plant.

A speed boat is a vehicle.

A school bus is a vehicle.

在此示例中,事物是元组的列表,其中每个元组中的第一项是第二项所属的组。

groupby()函数有两个参数:(1)数据分组和(2)函数分组。

这里,lambda x:x [0]告诉groupby()使用每个元组中的第一个项作为分组键。

在上面的for语句中,groupby返回三个(键,组迭代器)对 – 每个唯一键一次。您可以使用返回的迭代器迭代该组中的每个单个项目。

下面是使用列表解析的相同数据的一个稍微不同的示例:

for key, group in groupby(things, lambda x: x[0]):

listOfThings = " and ".join([thing[1] for thing in group])

print key + "s: " + listOfThings + "."

这将给你输出:

animals: bear and duck. plants: cactus. vehicles: speed boat and school bus.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值