generator:固定偏移量的预处理事件

时间:2018-04-19 20:42:18

标签: python generator

我有一个生成器生成事件,我想用我可以从API中获取的其他元数据来丰富它。

某些事件的对象ID与其关联,其他事件具有对象的哈希值,但不是两者都有。我无法根据哈希获取对象ID,我只能做id->哈希。

我想在所有事件中同时拥有id和hash字段,以及#34;展望未来"生成器只有固定数量的事件,并在ids和哈希之间建立双向映射。我不想重复整个迭代两次(首先构建映射然后打印它)。

假设我有populate_mapping方法和encrich_event方法(一次只接收一个事件),populate_mapping更新全局字典,encrich_event使用该字典,我希望以populate_mapping处理超过N的{​​{1}}个事件的方式调用它们,encrich_event的结果仍然是惰性评估的并可通过发电机获得。

1 个答案:

答案 0 :(得分:2)

你提出问题的方式非常抽象,但似乎你正在尝试使用可以将迭代器分成两部分的itertools.tee函数

x1, x2 = itertools.tee(your_generator, 2)

然后跳过第一个迭代器中的前4个元素:

x1 = itertools.islice(x1, 4, None)

将x1传递给一个函数,将x2传递给另一个函数,x1将提前4个元素,除非需要,否则不会消耗额外的元素(tee函数上下文将在其范围内部存储4个元素)