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

2024-06-03 09:49:03 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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,而不是唯一一个。我在输出中得到的movie-for-movie-for-movie-id(427)有许多与电影相关的用户id。你知道吗

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

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


Tags: 代码用户inidfordata电影as
1条回答
网友
1楼 · 发布于 2024-06-03 09:49:03

创建users时,会不断覆盖users[movie_id]的值。您需要用一个容器来创建users,比如它的值列表。你知道吗

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)
    ...

或者

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)
    ...

相关问题 更多 >