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

2024-06-11 11:23:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个迭代器,它生成一个包含多个数据字段的字典。是否有一种方法可以将此数据流拆分为以下两个迭代器,每个迭代器仅具有前面流式字典的特定数据字段

class Splitter(IteratorBase):
    def __init__(self, iterable):
        super().__init__(iterable)

    def __iter__(self):
        for pt in self.iterable:
            yield pt["field1"], pt["field2"]

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


Tags: 方法selfpt字典initdef流式iterable
1条回答
网友
1楼 · 发布于 2024-06-11 11:23:41

您可以使用^{}

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

相关问题 更多 >