2015-07-12 114 views
0

我想要做的是創建一個2維列表。外部列表將是學生數據,內部列表是學生的名字,其中包含他們所有的考試成績。 如果他們的名字(studentName)已經在外部列表中,那麼它只是將另一個finalScore附加到適當的內部列表中。 但是,我不斷收到錯誤,我不能追加到最後一行中的字符串。如何附加到2維列表的最後一個元素?

with open('class_three.txt') as file: 
     for line in file: 
      studentName, finalScore = line.split(": ") 
      finalScore = finalScore.rstrip("\n") 
      studentDataList = [[0 for x in range(3)] for x in range(30)] 
      if studentName in studentDataList: 
       positionOfName = studentDataList.index(studentName) 
       studentDataList[positionOfName].append(finalScore) 
      else: 
       studentDataList.append(studentName) 
       studentDataList[-1].append(finalScore) 

文件class_three.txt看起來像這樣:

jak: 1 
kate: 9 
niki: 10 
abi: 5 
mart: 2 
zeddy: 7 
jak: 5 
jak: 3 
kate: 5 

我能做些什麼來解決我遇到了錯誤?有什麼方法可以改進我正在嘗試做的方法嗎?任何建議將非常感激。我也很抱歉,如果這是一個重複的問題。

+0

'studentDataList.append(studentName)'添加一個字符串的'結束studentDataList',當然''studentDataList [-1] .append(finalScore)'失敗;你想要像'studentDataList.append([studentName,finalScore])''嗎? – jonrsharpe

回答

0

您應該使用列表的字典這樣的:

studentDataDict = {} 
with open('class_three.txt') as file: 
    for line in file: 
     studentName, finalScore = line.strip().split(": ") 
     if studentName in studentDataDict: 
      studentDataDict[studentName].append(finalScore) 
     else: 
      studentDataDict[studentName] = [finalScore] 

然後studentDataDict看起來像:

{ 
    'abi': ['5'], 
    'niki': ['10'], 
    'kate': ['9', '5'], 
    'mart': ['2'], 
    'jak': ['1', '5', '3'], 
    'zeddy': ['7'] 
} 
+0

我曾嘗試過使用字典,但無法正確追加它。非常感謝!! – electricbl00

+0

不客氣! – fivetentaylor

相關問題