我需要完成一项任务,其中给我一个名字和每个名字的等级列表,我需要按照最高到最低等级对这些进行排序。但是,如果两个名称具有相同的等级,则按字母顺序对这些名称进行排序。这是我遇到的问题。我需要将排序功能保持在一行。
a = [('Tim Jones', 54), ('Anna Smith', 56), ('Barry Thomas', 88)]
sum(sorted(a,key=lambda x: x[1]))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'tuple'
关于如何解决这个问题的任何想法?我已经尝试了很多天了。
更新
好的,感谢您帮助我解决这个问题,但是还有另一种情况我也需要解决。
a = [('Tim Jones', 'C'), ('Anna Smith', 'B'), ('Barry Thomas', 'A')]
sorted(a,key=lambda x: -x[1])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <lambda>
TypeError: bad operand type for unary -: 'str'
所以这就是目前的情况,基本上我现在需要做的就是整理列表,然后从最高等级到最低等级。