我是一名python初学者,并且面临着不止一次迭代分组数据的问题。我明白一旦消耗了迭代器就无法重用,但是可以从单个groupby()获得多个迭代器吗?
这个答案说可以在列表等上创建多个迭代器。但我不明白我如何为groupby做同样的事情?
我想做的是如下:
如果你需要在这里查看我的代码是我正在做的事情的基本布局,但我不知道是否真的需要:
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)
答案 0 :(得分:0)
如果有人想知道同样的问题,我通过如此处所述的迭代器来解决问题:
由于组本身是一个迭代器,我所要做的就是将其复制为:
# To duplicate an iterator given the iterator group
group, duplicate_iterator = tee(group)
不要忘记从itertools导入tee函数......我不知道这是否是最好的方法,但至少它可行并完成工作。