python - 在 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 是 used_id。而且不是唯一的。我在输出中获得了许多与电影相关的用户 ID,movie_id(427)。
这个movie_id 链接到许多user_id。所以理想情况下,所有这些 user_id 也应该为这部特定的电影而来。但我只得到一个。
你们能请问我在上面的代码中做错了什么吗?感谢有人对此提供帮助。在此先感谢。
解决方案
当您创建时,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)
...
推荐阅读
- javascript - 正在尝试添加帖子
- java - 使用 WebClient 时有没有办法同时获取状态和正文?
- javascript - 如何将类 ID 引入从 CSV 文件导入的数据中?
- ruby - Ruby 和 Moment.js 传递时间不会产生错误
- wordpress - googlesheet 中的时间戳错误
- c# - 在 Xamarin.Forms Android 中绘制宽图像
- javascript - Javascript 中的 List 引发意外错误
- java - 如何将值插入数据库?
- rust - 如何在 match 语句分支中声明变量?
- mongodb - 如何保持与 Quarkus 的 mongo 连接?