Python 两个大文件的选择性连接

Python 两个大文件的选择性连接,python,Python,我有两个非常大的平面文本文件(每个都大于10GB)。文件由许多行组成-每行是一个字符串(大约80字节),分隔符,然后是另一个更大的字符串。 第一个字符串类似于第一个文件的唯一键,但可以在第二个文件中重复。 所以,我需要得到一个结果文件-它应该包含键(可能像在第二个文件中一样重复)分隔符第一个文件中的第二个字符串,然后是第二个文件中的第二个字符串 我正在考虑使用dict来存储第一个文件中的信息:key=someHash(str1),value=position,然后通过第二个文件进行迭代,并将结果

我有两个非常大的平面文本文件(每个都大于10GB)。文件由许多行组成-每行是一个字符串(大约80字节),分隔符,然后是另一个更大的字符串。 第一个字符串类似于第一个文件的唯一键,但可以在第二个文件中重复。 所以,我需要得到一个结果文件-它应该包含键(可能像在第二个文件中一样重复)分隔符第一个文件中的第二个字符串,然后是第二个文件中的第二个字符串

我正在考虑使用dict来存储第一个文件中的信息:key=someHash(str1),value=position,然后通过第二个文件进行迭代,并将结果打印到第三个文件 但是我不知道应该使用哪个散列,如果应该使用的话 如何解决可能发生的碰撞?
最后,如何为这个问题构建有效的(内存+时间)解决方案

python提供的散列被设计为具有强大的加密能力,简单来说,这意味着它们是处理器密集型的。如果您决定使用脚本解决方案,请参阅以获取其他选项。

这是数据库术语中两个表的联接。使用数据库怎么样?使用内存字典可能会比输入文件占用更多内存。因此,除非您有16GB或更多的空闲空间,否则我建议使用sqlite数据库作为合并日志文件的中介。文件中的行是否有序?你有多少条记录?如果这些行是按id排序的,我可以想出一个有效的解决方案。如果没有,您必须首先构建一些索引结构——这基本上就是数据库所做的。因此,您应该使用一个。这些行在输入文件中没有顺序。行数约为百万分之一内置的
hash()
函数速度很快。您正在考虑
hashlib
中的函数。