【发布时间】:2020-03-25 11:18:23
【问题描述】:
请查看下面的代码和我得到的结果
def load_watchers():
try:
users = {}
with open('xyz.data','r') as user_file2:
for line in user_file2:
(user_id, movie_id) = line.split('\t')[0:2]
users[movie_id] = user_id
movie_genres_watchers = {}
with open('abc.item','r') as movie_file2:
for line in movie_file2:
data = line.split('|')
movie_id = data[0]
movie_title = data[1]
movie_genre = data[6:23]
movie_genres_watchers.setdefault(movie_id, {})
movie_genres_watchers[movie_id][movie_title] = movie_genre,users[movie_id]
return movie_genres_watchers
except IOError as ioerr2:
print('File error in Function 2: ' + str(ioerr2))
并且在执行命令后,
movie_genres_watchers = load_watchers()
movie_genres_watchers['427']
我得到的结果是
{'To Kill a Mockingbird (1962)': (['0',
'0',
'0',
'0',
'0',
'0',
'0',
'1',
'0',
'0',
'0',
'0',
'0',
'0',
'0',
'0',
'0'],
'912')}
部分正确。
基本上,结果 912 是 used_id。而且不是唯一的。我在输出中得到了许多与movie_id(427) 的电影相关的user_id。
这个movie_id 链接到许多user_id。所以理想情况下,所有这些 user_id 也应该为这部特定的电影而来。但我只得到一个。
请问我在上面的代码中做错了什么? 感谢是否有人对此有所帮助.. 提前致谢。
【问题讨论】:
-
您好,您能否提供一个示例,说明两个数据文件中的内容?我猜这与您在 xyz 中读取的每个新用户有关。数据会覆盖该电影的任何先前数据。您将希望有一种方法可以将数据附加到该特定电影。此外,数据库可能是一种更有效的方法。
-
下次请为您的问题选择合适的标题。不,如果您声称自己的问题比其他人的问题更重要(这就是您刚刚所做的),您将不会更快地得到答案