在python中从我的数据文件中保存/读取的数据错误

在python中从我的数据文件中保存/读取的数据错误,python,list,Python,List,请查看下面的代码和我得到的结果 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_i

请查看下面的代码和我得到的结果

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是所使用的id,而不是唯一的id。有许多用户id与我在输出中得到的movie for movie_id(427)相关

此电影id链接到多个用户id。因此,理想情况下,所有这些用户id也应该用于此特定电影。但我只得到一个

你们能告诉我在上面的代码中我做错了什么吗? 如果有人能帮上忙,我将不胜感激。。
提前感谢。

当您创建
用户时
会不断覆盖
用户[movie\u id]
的值。您需要使用一个容器来创建
用户
,比如它的值列表

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.setdefault(movie_id,[]).append(user_id)
    ...


您好,您能提供两个数据文件中的示例吗?我猜这与您在xyz中读取的每个新用户有关。数据会覆盖该电影的任何以前的数据。您将需要一种将数据附加到特定电影的方法。此外,数据库可能是一种更有效的方法。下次请为您的问题选择合适的标题。不,如果你声称你的问题比其他人的问题更重要(这就是你刚才所做的)。。。
import collections
,,,
try:
    users = collections.defaultdict(list)
    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].append(user_id)
    ...