在已有字典中给整型值添加内容
我正在尝试设置一个函数,用来计算两部电影之间的相似度分数。现在有一些现成的字典,这些字典的键是电影名,值则是导演、类型或主要演员。关于演员的字典有三个(每部电影列出了三位主要演员)。代码大部分运行得很好,但有时候我得到的分数比应该得到的要高。
# 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
1 个回答
1
试试用 in
条件:
if actor1[film1] in (actor1[film2], actor2[film2], actor3[film2]):
FavActorScore += 5
if actor2[film1] in ( actor1[film2], actor2[film2], actor3[film2]):
FavActorScore += 5
if actor3[film1] in (actor1[film2], actor2[film2], actor3[film2]):
FavActorScore += 5
当你写 a==b or c or d
时,这个表达式会在以下情况为真:如果 a 等于 b,或者 c 为真,或者 d 为真。并不是说 a 等于 b、c 或 d。