从列表中找到最接近的值?

时间:2020-04-29 23:02:11

标签: python python-3.x list

我有一个字符串列表:

list = ["END_BOOTS", "END_CHEST", "MIDAS_SWORD", "SLIME_HAT", "WOOD", "ENDER_PEARL"]

和一个关键字:

keyword = "ENDER_BOOTS"

我需要扫描列表以搜索最接近关键字的值。在这种情况下,最接近的值为END_BOOTS。如果找不到该值,则代码应返回false。

我尝试将每个值转换为字符列表,对其进行排序,并对关键字进行相同的操作。之后,我将对它们进行比较,并检查哪个字符列表具有与该关键字更常见的字母。但是,这似乎效果不佳,效率也不高。

在python 3中什么是解决此问题的好方法?

2 个答案:

答案 0 :(得分:3)

import difflib

a = 'ENDER_BOOTS'
b = 'END_BOOTS'

seq = difflib.SequenceMatcher(None,a,b)
d = seq.ratio()*100
print(d) 

遍历列表并返回得分最高的单词

答案 1 :(得分:1)

我建议计算搜索关键字与列表中每个项目之间的编辑距离,然后以最小值作为匹配项。

import editdistance

item_list = ["END_BOOTS", "END_CHEST", "MIDAS_SWORD", "SLIME_HAT", "WOOD", "ENDER_PEARL"]

keyword = "SLIMER_HUT"
distances = [editdistance.eval(keyword, item) for item in item_list]
match_index = distances.index(min(distances))

print(distances)
# [10, 9, 10, 2, 10, 9]

print(item_list[match_index])
# SLIME_HAT