python groupby用法_如何使用Python的itertools.groupby()?

重要说明:你不得不对数据进行排序第一。

我没有理解的部分是在示例构造中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 " "

这将给出输出:熊是动物。

鸭子是动物。

仙人掌是一种植物。

快艇是一种交通工具。

校车就是一辆车。

在这个例子中,things是元组的列表,每个元组中的第一个项是第二个项所属的组。

这个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 + "."

这将给出输出:动物:熊和鸭子。

植物:仙人掌。

车辆:快艇和校车。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值