假设我有一个string
"Hello"
和一个清单
words = ['hello', 'Hallo', 'hi', 'house', 'key', 'screen', 'hallo','question', 'Hallo', 'format']
我怎样才能找到n words
那些最接近"Hello"
并出现在列表中words
?
在这种情况下,我们会有['hello', 'hallo', 'Hallo', 'hi', 'format'...]
因此,策略是将列表单词从最近的单词到最远的单词排序。
我想到了这样的事情
word = 'Hello'
for i, item in enumerate(words):
if lower(item) > lower(word):
...
但在大型列表中它非常慢。
UPDATE
difflib
可以工作,但也很慢。 (words list
里面有 630000 多个单词(已排序,每行一个))。因此,每次搜索最接近的单词时,检查列表需要 5 到 7 秒!