10
John Seen 3.7
Bill Stark 2.06
Jack Connor 3.47
Drake Mason 3.05
Bill Callum 2.83
Emma Jake 3.65
William Damian 3.33
James Charlie 3.56
Oscar Rhys 3.78
George Reece 2.52
因此,如果“ GPA”数字(值)相同,则应按键对其进行排序(降序)。
以下代码按值排序,然后按键排序,但升序
n = int(input())
grades = {}
result = ''
for i in range(n):
student = input().split()
grades[student[0] + ' ' + student[1]] = eval(student[2])
sorted_d = sorted(grades.items(), key=lambda x: (-x[1], x[0]))
for i in sorted_d:
print(str(i[0]) + " - " + str(i[1]))
答案 0 :(得分:0)
您的代码中存在一些误解:
grades
dict
是错误的选择。(student,grade)
的列表/元组的列表
grades
使用字典,应该使用列表。 (但是,由于它现在是(student,grade)
元组的列表,因此可以将其命名为sg
或student_grades
或dat
等)。l.sort(key=operator.itemgetter(1,2))
。但是您需要不同的顺序,因此迫使您使用自定义sort(cmp=...)
,例如参见this 我留给您重构代码。正确分解后,看起来就像是一个非常简单的练习。 故事的寓意是仔细考虑您为需要执行的任务选择的数据结构:正确的选择将使事情变得简单;错误的选择会造成问题,然后您需要重新考虑最初的假设并考虑其他选择。