我有一个包含数十万学生的文本文件,以及他们对某些电影的评分,第一个词是学生编号,第二个是电影的名称(没有空格),第三个是他们给出的评分电影:
student1000 Thor 1
student1001 Superbad -3
student1002 Prince_of_Persia:_The_Sands_of_Time 5
student1003 Old_School 3
student1004 Inception 5
student1005 Finding_Nemo 3
student1006 Tangled 5
我想将它们排列在字典中,以便将每个学生映射到他们的电影收视率列表,其中每个学生的收视率顺序相同。换句话说,我希望它是这样的:
{student1000 : [1, 3, -5, 0, 0, 3, 0,...]}
{student1001 : [0, 1, 0, 0, -3, 0, 1,...]}
这样每个学生的第一、第二、第三等评级对应于相同的电影。电影和学生编号的顺序是完全随机的,我很难有效地做到这一点。想出一些可以最小化这个问题的大 O 复杂性的东西的任何帮助都会很棒。
我最终弄清楚了。这是我为任何想知道的人使用的代码:
def get_movie_data(fileLoc):
movieDic = {}
movieList = set()
f = open(fileLoc)
setHold = set()
for line in f:
setHold.add(line.split()[1])
f.close()
movieList = sorted(setHold)
f = open(fileLoc)
for line in f:
hold = line.strip().split()
student = hold[0]
movie = hold[1]
rating = int(hold[2])
if student not in movieDic:
lst = [0]*len(movieList)
movieDic[student] = lst
hold2 = movieList.index(movie)
rate = movieDic[student]
rate[hold2] = rating
f.close()
return movieList, movieDic
谢谢您的帮助!