原错误
误以为newlist = sorted(allgrade.items(), key=lambda x: x[-1][-1], reverse=True)
语句生成的是字典, 导致错误。
实际情况
a = {'a': [1, 2, 3], 'b': [23, 4, 6], 'c': [3, 54, 5]}
b = sorted(a.items(), key=lambda x: x[-1])
print(b)
这段代码会生成如下结果
[(‘a’, [1, 2, 3]), (‘c’, [3, 54, 5]), (‘b’, [23, 4, 6])]
故最后结果是一个列表
程序代码
allgrade = {}
for i in range(5):
thesum = 0
average = 0
name = input('Enter your name:')
onegrade = []
for j in range(3):
thegrade = eval(input('Enter one grade:'))
onegrade.append(thegrade)
allgrade[name] = onegrade
thesum = sum(allgrade[name])
average = thesum / 3
allgrade[name].append(thesum)
print("Student{0}'s sum grade is: {1}".format(i + 1, thesum))
print("Student{0}'s average grade is: {1}".format(i + 1, average))
newlist = sorted(allgrade.items(), key=lambda x: x[-1][-1], reverse=True)
for k in range(5):
print("{0}:{1} gets {2} points\
".format(k + 1, newlist[k][0], newlist[k][-1][-1]))