有没有比这更 Pythonic、紧凑、直观的方法来对字母等级进行排序(不使用自定义字典)?
grades = ['B-','C','B','C+','A','D+','B+','C-','A+','D','A-']
sorted(grades, key=lambda g: (g[0], '+ -'.index((g+' ')[1])) )
['A+', 'A', 'A-', 'B+', 'B', 'B-', 'C+', 'C', 'C-', 'D+', 'D']
为了获得 'X-','X','X+' 的比较数字顺序,我做了一个空格 ' ' 的 hacky 附加,这样g[1]
总是存在,所以我可以使用.index()
获取修饰符“+ -”的排名。
(动机是这个问题)