def grouprobin(iterable, key):
    groups = [list(g) for k, g in groupby(iterable, key)]
while groups:
    group = groups.pop(0)
yield group.pop(0)
if group:
    groups.append(group)
Как «циклировать» одну итерацию на основе некоторых критериев?