我有一个文件,其内容如下:
1 257.32943114
10 255.07893867
100 247.686049588
1000 248.560238357
101 250.673715233
102 250.150281581
103 247.076694596
104 257.491337952
105 250.804702983
106 252.043717069
107 253.786482488
108 255.588547067
109 251.253294801
...
我想要做的是从此列表创建一个数组,第一列中的数字作为索引。例如,数组的第一个元素是257.32943114,对应于列表中的1,数组的第109个元素将是251.253294801,对应于列表中的数字109,依此类推。我怎样才能在Python中实现这一目标?
答案 0 :(得分:1)
可能你想要一本字典,而不是一个列表,但如果你想要一个列表:
def insert_and_extend(lst, location, value):
if len(lst) <= location:
lst.extend([None] * (location - len(lst) + 1))
lst[location] = value
mylist = []
insert_and_extend(mylist, 4, 'a')
insert_and_extend(mylist, 1, 'b')
insert_and_extend(mylist, 5, 'c')
print mylist
将其作为字典:
dict = {}
dict[4] = 'a'
dict[1] = 'b'
dict[5] = 'c'
print dict
答案 1 :(得分:1)
分隔符:您可以在分割线中使用制表符或空格
file = open(location, 'r')
dictionary = {}
for line in file.readlines():
aux = line.split(' ') #separator
dictionary[aux[0]] = aux[1]
print dictionary
如果您的值类似于'257.32943114 \ n',则可以使用词典[aux [0]] = aux [1] [: - 1]来逃避新行的字符。
答案 2 :(得分:1)
如果你坚持使用列表,这是另一个更加pythonic的解决方案:
with open('test.in', 'r') as f:
r = []
map(lambda (a,b): [0, [r.append(0) for i in xrange(a - len(r))]] and r.append(b), sorted([(int(l.split(' ')[0]), float(l.split(' ')[-1])) for l in f], key=lambda (a,b): a))
r
正是您要找的。 p>