簡體   English   中英

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

[英]Finding the closest value from a list?

我有一個字符串列表:

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

和一個關鍵字:

keyword = "ENDER_BOOTS"

我需要掃描列表以搜索最接近關鍵字的值。 在這種情況下,最接近的值將是 END_BOOTS。 如果找不到這樣的值,代碼應該返回 false。

我嘗試將每個單獨的值轉換為字符列表,對其進行排序並對關鍵字執行相同的操作。 在我將它們進行比較並檢查哪個字符列表與關鍵字具有更多常見字母之后。 但是,這似乎效果不佳,效率也不高。

python 3 中這個問題的一個好的解決方案是什么?

import difflib

a = 'ENDER_BOOTS'
b = 'END_BOOTS'

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

遍歷列表並返回得分最高的單詞

我建議計算您的搜索關鍵字與列表中每個項目之間的編輯距離,然后將最小值作為您的匹配項。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM