从 itertools.groupby()
文档中:
返回的组本身就是一个与共享底层可迭代对象的迭代器
groupby()。因为源是共享的,所以当groupby()对象前进时,先前的组将不再可见。
将输出从
groupby()转换为列表将使
groupby()对象前进。
因此,您不应该将类型转换
itertools.groupby对象列出。如果要将值存储为
list,则应执行以下 列表理解操作
以创建
groupby对象的副本:
grouped_l = [(a, list(b)) for a, b in itertools.groupby(l, key=lambda x:x[0])]
这将允许您多次迭代列表 (从groupby
对象转换)。但是,如果您只对结果进行一次迭代感兴趣,那么您在问题中提到的第二个解决方案就可以满足您的要求。