2010-05-31 107 views
2

我有100k左右的列表文件,并有另一个文件,再次平均50索引可以更快地搜索文件中的列表?

我想列出的第二项中的第二个文件,第一个文件并重复的第二个元素比较各地的名单这为第二个文件中的50个列表中的每一个获取所有匹配元素的结果。

我已经写了所有这些代码,但这需要花费很多时间,因为它需要检查整个100k列表大约50次。我想提高速度。

我不能发布我的代码,因为它是大代码的一部分,将很难从中推断任何东西。

+2

看起来像'lakh'意思是100,000,cfr http://en.wikipedia.org/wiki/Lakh。 – 2010-05-31 05:40:19

+0

Ohh yes 1 10kh意思是100,000 only – kaushik 2010-05-31 05:51:51

回答

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应该比较微不足道;-)

如果您希望更准确地表达您的规格和相关数字(并且理想地使用英语),也许可以提供更具体的帮助!

+0

理想情况下用英语?你认为他的问题是用什么语言写成的? – 2010-05-31 08:13:30

+0

@约翰,“十万”通常不被视为一个英语单词(尽管我能够查找它!),所以我基本上要求OP坚持“正常”的英语术语(他应该引入更多的异国情调术语他的散文,可能的回应者可能无法将它们翻译成更正常的英文术语)。 – 2010-05-31 16:14:35