這是代碼:records = {} file = open(filepath, 'r') for line in file.readlines(): r = line.split('\t') print r records.setdefault(int(r[1]), {}) records[int(r[1])].setdefault(int(r[0]), {}) records[int(r[1])][int(r[0])] = float(r[2])其中r打印出來是:['15', '3116', '3.0', '1337402827\n']['\n']提示的錯誤是: records.setdefault(int(r[1]), {})IndexError: list index out of range我換成 print r[1] 的時候,打印出來的是【3116】但是提示的錯誤是: print r[1]IndexError: list index out of range這是什么問題啊。。
1 回答

慕尼黑5688855
TA貢獻1848條經驗 獲得超2個贊
一般外部輸入的數據都可能存在問題。所以通常在readlines后要做一次處理
for line in file.readlines():
if not line.strip():continue
r = line.split('\t')
if len(r)<3:continue
print r
try:
records.setdefault(int(r[1]), {})
records[int(r[1])].setdefault(int(r[0]), {})
records[int(r[1])][int(r[0])] = float(r[2])
except ValueErro:
continue
這樣就避免了空行,字段數不足,以及類型轉換出錯。
添加回答
舉報
0/150
提交
取消