首页 > 解决方案 > 如何循环两个 python 生成器

问题描述

我有两个 python 生成器。说

1) txn_gen,产生字典值,如

{'id': 1,'ref_no': 4323453536, 'amt': 678.00, 'txn_date': '12-11-2019'}
.
.
.
{'id':10000000 , 'ref_no':8523118426, 'amt':98788.00, 'txn_date': '12-11-2019'}

2)acc_gen,产生字典值,如

{'ref_no': 4323453536, 'acc_no': 123456789, 'amt': 98789.00}
.
.
.
{'ref_no': 8523118426, 'acc_no': 123456789, 'amt': 45654567.00}

我想循环匹配txn_gen。我是这样循环的。acc_genref_no

for gen1 in txn_gen:
     for gen2 in acc_gen:
          if gen1[1] == gen2[0]:
               print(gen2)

但我只得到一个匹配值,即第一个匹配值。我期待数百万个匹配值。

我想提高性能,因为我有数百万条记录。

标签: pythonpython-3.x

解决方案


一个生成器只能被评估一次。在您消耗完 中的所有值acc_gen并继续执行 中的下一个值后txn_gen,您将无法acc_gen再次循环。

对于这种分析,您可以遍历txn_gen并保存每个ref_no哈希表,然后遍历acc_gen查找它们的ref_no字段。


推荐阅读