我有一个字符串列表:
list = ["END_BOOTS", "END_CHEST", "MIDAS_SWORD", "SLIME_HAT", "WOOD", "ENDER_PEARL"]
和一个关键字:
keyword = "ENDER_BOOTS"
我需要扫描列表以搜索最接近关键字的值。在这种情况下,最接近的值为END_BOOTS。如果找不到该值,则代码应返回false。
我尝试将每个值转换为字符列表,对其进行排序,并对关键字进行相同的操作。之后,我将对它们进行比较,并检查哪个字符列表具有与该关键字更常见的字母。但是,这似乎效果不佳,效率也不高。
在python 3中什么是解决此问题的好方法?
答案 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