2016-02-25 119 views
0

我有大量从SQL查询返回的数据,然后分解成使用itertools.groupby()基团跳过在Python迭代

我需要跳过每个组的所述第一构件的第一构件,然后处理其余的人。将调用next()来做这件事吗?我对这种方式使用的迭代器不是很熟悉。

for group in itertools.groupby(...): 
    group.next() 
    for val in group... 
+0

是的。这应该工作。 '对于组中的val'真的只是调用'group.next()',直到它得到'StopIteration'。 – zondo

+0

请注意,Python 3中不存在'.next()';它已被重命名为'.__ next __()'。无论哪种方式,你应该使用'next()'函数而不是方法。 – jwodder

回答

2

理论是合理的,但写的是行不通的,因为(a)groupby返回(key, iterator_over_group)对,不能直接组的迭代,和(b)的next方法已更名为__next__代码在Python 3中(无论如何,你应该使用next函数)。编写代码的正确方法是:

for key, group in itertools.groupby(...): 
    next(group) 
    for val in group: 
     ...