我在.txt
文件中设置了如下数据结构:
andrew
3 3 1 0 3 0 3 0 0 -3 0 5 3 0 1 0 0 5 3 0 0 0 0 1 0 3 0 1 0 0 3 5 3 3 0
0 0 5 0 5 0 3 3 0 -3 0 0 5 1 5 3 0 3 0 0
我正在尝试按以下格式导入它:
{'user':[0,1,3,4,5]}
我尝试了各种各样的实现,但是找不到任何能够满足我需求的东西并且考虑了很多变量。
我目前的代码如下:
with open('ratings.txt', 'r') as f:
for line in f:
x = line.split()
print(x)
ratings[x[0]] = [y for y in x[1:]])
有关如何改进代码的任何想法吗?
答案 0 :(得分:1)
你可以通过read()
方法阅读整个文件,然后将其拆分,这样你就可以按照自己的意愿创建字典而不逐行阅读
ratings = {}
with open('ratings.txt', 'r') as f:
X = f.read().split()
x = set([int (i) for i in X[1:] if int(i) >= 0]) # this will create a set which values are >= 0
ratings[X[0]] = list(x)
print(ratings)# output --> {'andrew': [0, 1, 3, 5]}
这假设您的文本文件将始终采用您上面仅提及一个用户的格式
根据您的文本文件,我认为您可以这样做: 你读2行2,直到你找到一个空行或文件的结尾 如下所示
ratings = {}
with open('ratings.txt', 'r') as f:
while True:
name = f.readline().strip()
values = f.readline().strip().split()
#print(values)
if not name: break
else:
ratings[name] = list(set(int (i) for i in values if int(i) >= 0))
print(ratings)# output --> {'andrew': [0, 1, 3, 5]}