我有一个包含大约10万个列表的文件,并且另一个文件的列表大约平均为50个。
我想将第二个文件中的第二项列表与第一个文件的第二个元素进行比较,并对第二个文件中的50个列表中的每个列表重复此操作,并获得所有匹配元素的结果。
我已经编写了所有这些代码,但这需要花费大量时间,因为它需要检查整个100k列表大约50次。我想提高速度。
我无法发布我的代码,因为它是大代码的一部分,并且很难从中推断出任何内容。
答案 0 :(得分:1)
您可以从内存中的第一个文件中读取所有“十万”(十万)行一次:
import collections
d = collections.defaultdict(list)
with open('lakhlists.txt') as f:
for line in f:
aslist = line.split() # assuming whitespace separators
d[aslist[1]].append(aslist)
你没有给我们许多关键参数,但我敢打赌,这将适合典型模型平台的内存(对于列表长度的合理猜测)。假设这部分有效,只需循环遍历其他小文件,并将其编入d
,这相比之下应该是微不足道的; - )
如果您想更准确地表达您的规格和相关数字(理想情况下是英文),可能会提供更具体的帮助!