如何附加到二维列表的最后一个元素?

时间:2015-07-12 16:06:05

标签: python-3.x multidimensional-array

我想要做的是创建一个二维列表。外部列表将是学生数据,内部列表是学生的名称,其中包含所有测试分数。 如果他们的名字(studentName)已经在外部列表中,那么它只是将另一个finalScore附加到适当的内部列表中。 但是,我不断收到错误,我无法在最后一行附加到字符串。

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

我该怎么做才能解决我遇到的错误?有什么方法可以改进我尝试做的方法吗?任何建议都将非常感激。如果这是一个重复的问题,我也会道歉。

1 个答案:

答案 0 :(得分: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']
}