python - 如何循环两个 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_gen
ref_no
for gen1 in txn_gen:
for gen2 in acc_gen:
if gen1[1] == gen2[0]:
print(gen2)
但我只得到一个匹配值,即第一个匹配值。我期待数百万个匹配值。
我想提高性能,因为我有数百万条记录。
解决方案
一个生成器只能被评估一次。在您消耗完 中的所有值acc_gen
并继续执行 中的下一个值后txn_gen
,您将无法acc_gen
再次循环。
对于这种分析,您可以遍历txn_gen
并保存每个ref_no
哈希表,然后遍历acc_gen
查找它们的ref_no
字段。
推荐阅读
- pandas - TypeError:Series.name 必须是可散列类型
- python - 无法为链接提供href,错误:“找不到'foo'的反向”
- html - 将 unicode 放入 CSS 内容是否合法?
- spring - 在没有@RequestParam 名称的控制器中获取文件
- ruby-on-rails - 与图像的多态关联
- c++ - 如何使用被覆盖函数中的子类引用覆盖纯虚函数
- python - 在 SNMP 代理端动态增加 OID
- swift - 如何快速隐藏状态栏?
- python - “tensorflow/core/platform/posix/subprocess.cc:208] 无法启动 fork() 子进程:无法分配内存”
- javascript - 在javascript中将函数转换为类-“this”和私有函数的问题