我可以从group by获得多个迭代器吗?

时间:2018-04-06 09:26:03

标签: python

我是一名python初学者,并且面临着不止一次迭代分组数据的问题。我明白一旦消耗了迭代器就无法重用,但是可以从单个groupby()获得多个迭代器吗?

这个答案说可以在列表等上创建多个迭代器。但我不明白我如何为groupby做同样的事情?

  

Multiple Iterators

我想做的是如下:

  1. 我的数据是(键,值)对,我想通过键组合。
  2. 根据每个值部分有一些特殊的数据 group和我想提取这些特殊对并处理它们 分开。
  3. 完成后我需要回到原始数据和流程 其余的对(这是我需要第二个迭代器的地方)。
  4. 如果你需要在这里查看我的代码是我正在做的事情的基本布局,但我不知道是否真的需要:

    for current_vertex, group in groupby(data, itemgetter(0)):
        try:
            # Special data extraction
            matching = [int(value.rstrip().split(':')[0]) for key, value in group if CURRENT_NODE_IDENTIFIER in value]
            if len(matching) != 0:
                # Do something with the data extracted (some variables generated here -- say x, y z)
                for key, value in group:
                    if not CURRENT_NODE_IDENTIFIER in value:
                        # Do something with remaining key, value pairs (use x, y, z)
    

1 个答案:

答案 0 :(得分:0)

如果有人想知道同样的问题,我通过如此处所述的迭代器来解决问题:

  

How to duplicate an Iterator?

由于组本身是一个迭代器,我所要做的就是将其复制为:

# To duplicate an iterator given the iterator group
group, duplicate_iterator = tee(group)

不要忘记从itertools导入tee函数......我不知道这是否是最好的方法,但至少它可行并完成工作。