以不连续的顺序填充容器

filling up a container in a nonconsecutive order

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

我想读这个号码,例如。索引和字符串,然后将该字符串保存在列表中作为具有我读取的索引的元素。

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

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

您不能分配给不存在的索引。要么预先确定列表的大小:

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 值。