<p>您在每次迭代中计算相同的距离,这是一个很大的问题。请尝试只计算一次,然后获得maxSuggestion定义的建议数:</p>
<pre><code>def suggest(dic, word, distance, maxSugestions=5):
return [i[1] for i in sorted([(distance(word1, word), word1) for word1 in dic])[:maxSuggestion]]
</code></pre>
<p>然后是你的实现!如果您仍然希望更快,最好使用<a href="https://pypi.org/project/editdistance/0.3.1/" rel="nofollow noreferrer">editdistance</a>库。(或任何其他基于C的实现,如果有必要的话)而不是基于python的实现<a href="https://stackoverflow.com/a/64976482/7212929">For me it went 20x faster than python implementation.</a>根据原始答案:</p>
<blockquote>
<p>I used a c-based implementation of calculating levenshtein distance
making use of : <a href="https://pypi.org/project/editdistance/0.3.1/" rel="nofollow noreferrer">editdistance</a> library. On research I found that
many such tasks have C-based implementations like
matrix-multiplication and search algorithms etc. are readily
available. Besides you can always write a module in C and make use of
it in python. <code>editdistance.eval('banana', 'bahama')</code> took only <code>1.71 µs ± 289 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)</code>
in comparison with my defined function <code>levenshteinDistance('banana', 'bahama')</code> which took <code>34.4 µs ± 4.2 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)</code> That’s a 20x speedup.</p>
</blockquote>
<p>顺便说一句,我不是该软件包的作者,而是通过谷歌搜索“基于C的levenshtein距离实现”找到该软件包的</p>