Если я правильно понимаю, что вы хотите сделать, вот мое предложение:
def fuzzywuzzy(text_1, text_2, cutoff=0.99):
token_set_ratio = fuzz.token_set_ratio(tn.normalize_title(text_1),tn.normalize_title(text_2)) / 100
if token_set_ratio > cutoff:
return {
'ratio' : fuzz.ratio(tn.normalize_title(text_1),tn.normalize_title(text_2)) / 100,
'partial_ratio' : fuzz.partial_ratio(tn.normalize_title(text_1),tn.normalize_title(text_2)) / 100,
'token_sort_ratio' : fuzz.token_sort_ratio(tn.normalize_title(text_1),tn.normalize_title(text_2)) / 100,
'token_set_ratio' : token_set_ratio}
return None
Тогда вы можете сделать что-то вроде (при условии, что есть список событий):
for event in events:
s = scores(...)
if s:
event['scores'] = s
И вот более питоническая форма этого:
import fuzz
import tn
def fuzzywuzzy(text_1, text_2, cutoff=0.99):
def _compute_ratio(fn):
return fn(tn.normalize_title(text_1), tn.normalize_title(text_2)) / 100
token_set_ratio = _compute_ratio(fuzz.token_set_ratio)
if token_set_ratio > cutoff:
return {
'ratio': _compute_ratio(fuzz.ratio),
'partial_ratio': _compute_ratio(fuzz.partial_ratio),
'token_sort_ratio': _compute_ratio(fuzz.token_sort_ratio),
'token_set_ratio': token_set_ratio,
}
return None