我想要做的是创建一个二维列表。外部列表将是学生数据,内部列表是学生的名称,其中包含所有测试分数。 如果他们的名字(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
我该怎么做才能解决我遇到的错误?有什么方法可以改进我尝试做的方法吗?任何建议都将非常感激。如果这是一个重复的问题,我也会道歉。
答案 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']
}