重要说明:你必须先对数据进行排序。
我没有得到的部分是在示例构造中
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 groupbythings = [("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.
在此示例中,
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 + "."
这将为你提供输出:
animals: bear and duck.plants: cactus.vehicles: speed boat and school bus.



