从文件中读取长度不同的数字

时间:2019-05-17 13:25:13

标签: python python-3.x dictionary

我有一个名为data的文件,其中包含以下几行:

0.487856 0.487856 0.024289 1.000000
0.500000 0.500000 0.487856 0.487856 0.024289
0.024289 0.487856 0.487856 0.487856 0.487856 0.024289
0.024289 0.487856 0.487856 0.500000 0.500000
1.000000 0.024289 0.487856 0.487856

我想将其读取到python并将数据存储在字典中,其中的键是行号,值是每一行的全部

d = { '0': [0.487856, 0.487856, 0.024289, 1.000000], '1': [ 0.500000, 0.500000, 0.487856, 0.487856, 0.024289], ..., '4': [1.000000, 0.024289, 0.487856, 0.487856]}

这样,

d['0'] = [0.487856, 0.487856, 0.024289, 1.000000]
len(d['0']) = 4

我试图这样做

d={}
infile = open('data', 'r')
line_num = 1
for line in infile:
    d[line_num] = line
    line_num += 1

infile.close()

我知道了

d
{1: '0.487856 0.487856 0.024289 1.000000\n', 2: '0.500000 0.500000 0.487856 0.487856 0.024289\n', 3: '0.024289 0.487856 0.487856 0.487856 0.487856 0.024289\n', 4: '0.024289 0.487856 0.487856 0.500000 0.500000\n', 5: '1.000000 0.024289 0.487856 0.487856\n'}

首先,我无法编号从0开始的键,当计数器从0开始时,结果字典仅包含一个0的键,如下所示:

d
{0: '1.000000 0.024289 0.487856 0.487856\n'}

此外,尽管d['0'] = [0.487856, 0.487856, 0.024289, 1.000000]len(d['0']) = 36表示此键的所有整数都代表一个值,而我没有将它们作为单独的值来阅读。

如何解决此代码并以有效的方式编写(因为我有大量数据)?预先感谢

2 个答案:

答案 0 :(得分:2)

with open("data") as infile:
    d = {str(index): [float(n) for n in line.split()] for index, line in enumerate(infile)}

答案 1 :(得分:1)

d={}
infile = open('data', 'r')
line_num = 1
for line in infile:
    d[line_num] = line
    line_num += 1

我想很近

这应该更好地为您提供想要的东西

d={}
infile = open('data', 'r')
line_num = 1
for line in infile:
    d[line_num] = line.strip().split()
    line_num += 1

infile.close()
相关问题