文章目录
- 要求
- 题解
要求
根据表格求出哪两个演员合作电影数最多,及合作的电影数。
题解
from openpyxl import load_workbook
wb = load_workbook("电影导演演员信息表.xlsx")
ws = wb.worksheets[0]
actors_films = dict()
for i, row in enumerate(ws.rows):
if i == 0:
continue
films = row[0].value;
actors = row[2].value.split(",")
for actor in actors:
actors_films[actor] = actors_films.get(actor, set()) | {films}
# print(actors_films)
most_film = {}
for i in range(1, len(actors_films)):
for j in range(i + 1, len(actors_films) + 1):
actor1 = "演员" + str(i)
actor2 = "演员" + str(j)
film1 = actors_films.get(actor1) # 演员i参演的电影
film2 = actors_films.get(actor2) # 演员j参演的电影
if film1 & film2: # 求film1和2的交集
most_film.update({actor1 + "," + actor2: len(film1 & film2)}) # 演员i和j一起参演的电影数量
'''
sorted参数类型
可迭代类型,例如字典、列表
比较函数
可迭代类型中某个属性,对给定元素的每一项进行排序
降序或升序
'''
#lambda 根据共同参演电影数进行排序, reverse=True实现从大到小的排序
list_all=sorted(most_film.items(),key=lambda x: x[1], reverse=True) # .items()返回的是以元组类型表示的键值对,且键值之间用的是逗号而不是分号
print(most_film.items())
print(list_all)
print("合作电影最多的演员是:",list_all[0][0],"\n共同出演了",list_all[0][1],"场电影")