Я пытаюсь настроить функцию, которая будет рассчитывать балл за сходство двух фильмов. Существуют уже существующие словари, в которых фильмы являются ключевыми, а режиссеры, жанры или главные действующие лица являются ценностями. Есть три словаря актеров (по 3 главных актера для каждого фильма в списке). Код в основном работает нормально, но иногда я получаю результат, превышающий то, что должен получить.
# create a two-variable function to deterime the FavActor Similarity score:
def FavActorFunction(film1,film2):
#set the result of the FavActor formula between two films to a default of 0.
FavActorScore = 0
#add 3 to the similarity score if the films have the same director.
if direct[film1] == direct[film2]:
FavActorScore += 3
#add 2 to the similarity score if the films are in the same genre.
if genre[film1] == genre[film2]:
FavActorScore += 2
#add 5 to the similarity score for each actor they have in common.
if actor1[film1] == actor1[film2] or actor2[film2] or actor3[film2]:
FavActorScore += 5
if actor2[film1] == actor1[film2] or actor2[film2] or actor3[film2]:
FavActorScore += 5
if actor3[film1] == actor1[film2] or actor2[film2] or actor3[film2]:
FavActorScore += 5
#print the resulting score.
return FavActorScore
Я предполагаю, что при подсчете актеров, которые у них общие, он учитывает некоторые вещи дважды. Есть ли способ пересмотреть эту часть кода, чтобы получить более точный результат?
if actor1[film1] == actor1[film2] or actor2[film2] or actor3[film2]:
FavActorScore += 5
if actor2[film1] == actor1[film2] or actor2[film2] or actor3[film2]:
FavActorScore += 5
if actor3[film1] == actor1[film2] or actor2[film2] or actor3[film2]:
FavActorScore += 5