我有一个名为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
表示此键的所有整数都代表一个值,而我没有将它们作为单独的值来阅读。
如何解决此代码并以有效的方式编写(因为我有大量数据)?预先感谢
答案 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()