【发布时间】:2016-08-15 06:58:51
【问题描述】:
我正在开发一个程序,该程序接收一个 imdb 文本文件,并根据用户输入 N 输出顶级演员(按电影出场次数)。
但是,我遇到了一个问题,即我需要避免在相同数量的电影中被演员占用的位置。相反,如果两个演员在 5 部电影中,例如,数字 5 应该出现并且演员的名字应该组合在一起,用分号隔开。
我已经尝试了多种解决方法,但都没有奏效。有什么建议吗?
if __name__ == "__main__":
imdb_file = raw_input("Enter the name of the IMDB file ==> ").strip()
print imdb_file
N= input('Enter the number of top individuals ==> ')
print N
actors_to_movies = {}
for line in open(imdb_file):
words = line.strip().split('|')
actor = words[0].strip()
movie = words[1].strip()
if not actor in actors_to_movies:
actors_to_movies[actor] = set()
actors_to_movies[actor].add(movie)
movie_list= sorted(list(actors_to_movies[actor]))
#Arranges Dictionary into List of Tuples#
D = [ (x, actors_to_movies[x]) for x in actors_to_movies]
descending = sorted(D, key = lambda x: len(x[1]), reverse=True)
#Prints Tuples in Descending Order N number of times (User Input)#
for i in range(N):
print str(len(descending[i][1]))+':', descending[i][0]
【问题讨论】:
-
将所有代码嵌套在
if __name__ == "__main__":下意味着如果文件由另一个脚本导入,则无法访问其所有功能。
标签: python loops dictionary append tuples