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