如何快速查找英文单词列表中的单词?
问题描述:
我有单词“有点”或“qqqw”,并希望在英文单词列表中找到它(它存在或不存在于列表中)。 如果我有list of str
,然后如何快速查找英文单词列表中的单词?
is_exists = s in english_list
这种方法是缓慢的,如果我们有一个庞大的单词列表。我认为需要某种数据结构或算法才能使这个更快,更高效
那么,我该如何解决这个问题,有什么建议?
答
我发现其他话题的答案。对不起,我没有找到它。
我需要使用bisect
模块和功能bisect_left
。它可以快速找到列表中的项目,排序列表。 巨大的列表上很快。
答
正如已经建议创建一个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)
我很高兴听到您自己解决了您的问题。 –