2010-05-31 105 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