Мне нужно сгруппировать записи в словаре по клавише «title», я делаю это так, как описано ниже.
data = INPUT FROM QUESTION
sorted_data = {}
def sorted_words(title):
return ' '.join(sorted(title.lower().split(' ')))
for x in data:
sorted_data.setdefault(sorted_words(x['title']), []).append(x)
for x, v in sorted_data.items():
max_1 = max(v, key=lambda x:x['power'])
max_2 = max(v, key=lambda x:x['fire'])
sr = 1 / max_1['power'] + 1 / max_2['fire']
if sr < 1:
percentage = '{:.1%}'.format(1 / sr - 1)
date = datetime.fromtimestamp(max_1['date']).strftime('%A, %B %d, %Y %H:%M:%S')
Ввод:
[{'title': 'Boby - Jake', 'date': 1572258900, 'power': 1.87, 'Fire': 1.985}, {'title': 'Boby - Jake', 'date': 1572264300, 'power': 1.51, 'fire': 2.65}, {'title': 'Lego - Riko', 'date': 1572256800, 'power': 1.65, 'fire': 2.31}]
Вывод:
{'- boby jake': [{'title': 'Boby - Jake', 'date': 1572258900, 'power': 1.87, 'Fire': 1.985}, {'title': 'Boby - Jake', 'date': 1572264300, 'power': 1.51, 'fire': 2.65}], '- lego riko': [{'title': 'Lego - Riko', 'date': 1572256800, 'power': 1.65, 'fire': 2.31}]}
Но, как вы понимаете, «Боби - Джейк» ~ «Боби С. - Джейк О.»Поэтому мне нужно использовать difflib в функции sorted_words.
import difflib
sim = difflib.SequenceMatcher(None,'Tobias Kamke - Momo Zver','Tobias K - Momo Z').ratio()
print(sim)
Сходство должно составлять примерно 70%
Вопрос: Как реализовать difflib с моим текущим кодом?