我有一个 ~1GB 的数据条目文本文件和另一个我想用来过滤它们的名称列表。遍历每个条目的每个名称将非常慢。在 python 中执行此操作的最有效方法是什么?如果名称嵌入在条目中,是否可以使用哈希表?我可以利用名称部分始终放置的事实吗?
示例文件:
条目文件 -- 条目的每个部分由制表符分隔,直到名称
246 lalala name="Jack";surname="Smith"
1357 dedada name="Mary";surname="White"
123456 lala name="Dan";surname="Brown"
555555 lalala name="Jack";surname="Joe"
命名文件——每一个换行
Jack
Dan
Ryan
期望的输出——只有名称文件中有名称的条目
246 lalala name="Jack";surname="Smith"
123456 lala name="Dan";surname="Brown"
555555 lalala name="Jack";surname="Joe"
请您参考如下方法:
您可以使用 set 数据结构来存储名称——它提供了高效的查找,但如果名称列表非常大,那么您可能会遇到内存问题。
总体思路是遍历所有名称,将它们添加到集合,然后检查数据文件中每一行的每个名称是否包含在集合中>。由于条目的格式没有变化,您应该能够使用简单的正则表达式提取名称。
如果您遇到名称 set 大小的问题,您可以从名称文件中读取 n 行并对每组名称重复该过程,除非你需要排序。
