I am trying to find a best match for a name within a list of names.
I came up with the below code, which works, but I feel that the creation of the intermediate ratios
list is not the best solution performance-wise.
Could it be somehow replaced? Would reduce
be a good fit here (I have tried it, but could not get the index of best match and its value at the same time).
from fuzzywuzzy import fuzz
name_to_match = 'john'
names = ['mike', 'james', 'jon', 'jhn', 'jimmy', 'john']
ratios = [fuzz.ratio(name_to_match, name) for name in names]
best_match = names[ratios.index(max(ratios))]
print(best_match) # output is 'john'