2015-07-12 69 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

相关问题