以非连续的顺序填充容器

时间:2015-03-14 09:54:31

标签: python list initialization

我正在读取一个文件,其中每行包含从1到x的数字以及我需要保存的一些相关字符串。

我想读一下这个数字。 index和字符串然后将此字符串保存在列表中,作为具有我读取的索引的元素。

fread = open("sample.txt", "r")
lines = fread.readlines()
fread.close()

data = []
for line in lines:
  temp = line.split("\t")
  data[int(temp[0])] = temp[1]

但我得到IndexError: list index out of range

对我的问题最合适的解决方案是什么?

1 个答案:

答案 0 :(得分:1)

您无法分配给不存在的索引。要么预先确定清单的大小:

data = [None] * some_size

或使用字典:

data = {}
for line in lines:
    elems = line.split("\t")
    data[int(elems[0])] = elems[1]

然后将其转换成列表:

data = [data.get(i, None) for i in range(max(data))]

这将构建一个列表,其中包含足够的元素来存储从文件中读取的索引处的所有条目,以及文件中不存在的任何索引的None值。