在 python 中将迭代器拆分为两个后续迭代器



我有一个迭代器,它生成一个包含多个数据字段的字典。有没有办法将这个数据流分成两个后续迭代器,每个迭代器仅具有前面流字典的特定数据字段?

class Splitter(IteratorBase):
def __init__(self, iterable):
super().__init__(iterable)
def __iter__(self):
for pt in self.iterable:
yield pt["field1"], pt["field2"]

不起作用,因为这只会产生两个字段的元组

您可以使用itertools.tee

import itertools
# Make iterator for some data
data = [{'field1': 1, 'field2': 2}, {'field1': 3, 'field2': 4}]
it = iter(data)
# Make two iterators out of the first one
it1, it2 = itertools.tee(it)
# Use first iterator for field1
it1 = (elem['field1'] for elem in it1)
# Use second iterator for field2
it2 = (elem['field2'] for elem in it2)
# Print elements of each iterator
print(*it1)
# 1 3
print(*it2)
# 2 4

最新更新