如何快速查找英文​​单词列表中的单词?

问题描述:

我有单词“有点”或“qqqw”,并希望在英文单词列表中找到它(它存在或不存在于列表中)。 如果我有list of str,然后如何快速查找英文​​单词列表中的单词?

is_exists = s in english_list 

这种方法是缓慢的,如果我们有一个庞大的单词列表。我认为需要某种数据结构或算法才能使这个更快,更高效

那么,我该如何解决这个问题,有什么建议?

我发现其他话题的答案。对不起,我没有找到它。

我需要使用bisect模块和功能bisect_left。它可以快速找到列表中的项目,排序列表。 巨大的列表上很快。

+1

我很高兴听到您自己解决了您的问题。 –

这里有一些不错的比较:https://wiki.python.org/moin/TimeComplexity

你所需要的可能是一组。

正如已经建议创建一个set而不是list会更快。 对于“小”文件的数据,list似乎更快,但是一旦文件变大,访问set就会比列表更快。
有这样的测试:

from timeit import default_timer as timer 
import sys 
try: 
    lookfor = sys.argv[1] 
    pass 
except: 
    print "Program requires an word to look for" 
    sys.exit() 
wordset = set() 
wordlist = [] 
with open("your file name","r") as f: 
    for i in f.readlines(): 
     wordset.update(i.split()) 
     for x in i.split(): 
      wordlist.append(x) 
def testwords(word): 
    start= timer() 
    if word in wordset: print ("Yes word found") 
    else: print ("No word not found") 
    end= timer() 
    print ("Wordset",str(len(wordset))) 
    print (start,end,(end - start)*1000) 
    start= timer() 
    if word in wordlist: print ("Yes word found") 
    else: print ("No word not found") 
    end= timer() 
    print ("Wordlist",str(len(wordset))) 
    print (start,end,(end - start)*1000) 

testwords(lookfor)