Использование Process.extract в fuzzywuzzy и всех максимально похожих вариантов

#python #python-3.x #python-2.7 #similarity #fuzzywuzzy

#python #python-3.x #python-2.7 #сходство #fuzzywuzzy

Вопрос:

У меня есть следующие входные данные-

 query = 'Total replenishment lead time (in workdays)'
choices = ['PLANNING_TIME_FENCE_CODE', 'BUILD_IN_WIP_FLAG','Lead_time_planning', 'Total replenishment lead time 1', 'Total replenishment lead time  2']
print(process.extract(query, choices))
 

Я получаю следующий вывод-

 [('Total replenishment lead time 1', 92), ('Total replenishment lead time  2', 92), ('Lead_time_planning', 50), ('PLANNING_TIME_FENCE_CODE', 36), ('BUILD_IN_WIP_FLAG', 26)]
 

Но я просто хочу все лучшие варианты с максимальным коэффициентом подобия, даже если соотношение одинаково для двух вариантов.

Пожалуйста, помогите.

Ответ №1:

Если я правильно понял ваш вопрос, вы хотели бы получить следующий вывод:

 [('Total replenishment lead time 1', 92), ('Total replenishment lead time  2', 92)]
 

Вы можете добиться этого, отфильтровав результаты process.extract

 matches = process.extract(query, choices, limit=None)
max_ratio = matches[0][1]
best_matches = []
for match in matches:
  if match[1] != max_ratio:
    break
  best_matches.append(match)