私は何十万人もの学生のテキスト ファイルを持っており、特定の映画に対する彼らの評価は、最初の単語が学生番号、2 番目が映画の名前 (スペースなし)、3 番目が彼らの評価で構成されています。映画:
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,...]}
各学生の 1 番目、2 番目、3 番目などの評価が同じ映画に対応するようにします。映画と学生番号の順序は完全にランダムであり、これを効果的に行うのにかなり苦労しています。この問題の大きな複雑さを最小限に抑える何かを考え出すための助けは素晴らしいでしょう.
私はそれを理解することになりました。疑問に思っている人のために使用したコードは次のとおりです。
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
助けてくれてありがとう!