以不连续的顺序填充容器
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
值。
我正在读取一个文件,其中每一行都包含从 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
值。