Я использовал алгоритм сопоставления строк, чтобы найти оценку сходства двух строк и нашел наиболее похожую строку:
import difflib
import numpy as np
def getScore(item1,item2):
return float(difflib.SequenceMatcher(None, item1, item2).ratio()*100)
def getMostSimilar(f,r):
result={}
for i in f:
scores=[0]*len(r)
for ind,j in enumerate(r):
scores[ind]=getScore(i,j)
print(scores)
ind = np.argmax(scores)
result[i]=r[ind]
return result
f=['BIE-1_ITS5','BIE-2_ITS5','BIE-3_ITS5','KAZ-5_ITS5']
r=['BIE-1_ITS4','BIE-2_ITS4','BIE-3_ITS4','KAZ-5_ITS4']
print(getMostSimilar(f,r))
Я получил следующий результат:
[90.0, 80.0, 80.0, 50.0]
[80.0, 90.0, 80.0, 50.0]
[80.0, 80.0, 90.0, 50.0]
[50.0, 50.0, 50.0, 90.0]
{'BIE-1_ITS5': 'BIE-1_ITS4',
'BIE-2_ITS5': 'BIE-2_ITS4',
'BIE-3_ITS5': 'BIE-3_ITS4',
'KAZ-5_ITS5': 'KAZ-5_ITS4'}
Напечатанный Dictionary - это отображение наиболее похожих предметов.
Примечание: Это не возвращает уникальное сопоставление, так как для этого потребуется дополнительная информация о том, как сопоставить, т.е. * корпуса выключателя)