我有一个生成器生成事件,我想用我可以从API中获取的其他元数据来丰富它。
某些事件的对象ID与其关联,其他事件具有对象的哈希值,但不是两者都有。我无法根据哈希获取对象ID,我只能做id->哈希。
我想在所有事件中同时拥有id和hash字段,以及#34;展望未来"生成器只有固定数量的事件,并在ids和哈希之间建立双向映射。我不想重复整个迭代两次(首先构建映射然后打印它)。
假设我有populate_mapping
方法和encrich_event
方法(一次只接收一个事件),populate_mapping
更新全局字典,encrich_event
使用该字典,我希望以populate_mapping
处理超过N
的{{1}}个事件的方式调用它们,encrich_event
的结果仍然是惰性评估的并可通过发电机获得。
答案 0 :(得分:2)
你提出问题的方式非常抽象,但似乎你正在尝试使用可以将迭代器分成两部分的itertools.tee
函数
x1, x2 = itertools.tee(your_generator, 2)
然后跳过第一个迭代器中的前4个元素:
x1 = itertools.islice(x1, 4, None)
将x1传递给一个函数,将x2传递给另一个函数,x1将提前4个元素,除非需要,否则不会消耗额外的元素(tee函数上下文将在其范围内部存储4个元素)