将txt文件导入字典中的元组

时间:2018-03-12 12:18:10

标签: python-3.x

我在.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:]])

有关如何改进代码的任何想法吗?

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]}