如何在python中按升序对第一列进行排序,如果相同,则对第二列进行降序排序?

时间:2018-10-24 07:49:15

标签: python sorting reverse

我有一个列表[('a',2),('h',5),('c',3),('h',4)]。我想对它进行排序,以使每个元组的第一个条目都按升序排列。如果存在重复,则在Python中根据第二元组条目以降序排列。 我想得到这个:

[('a',2),('c',3),('h',5),('h',4)]

1 个答案:

答案 0 :(得分:1)

由于元组中的第二个元素是数字(因此是一元-运算符的有效操作数),因此可以使用以下简单键函数:

lst = [('a', 2), ('h', 5), ('c', 3), ('h', 4)]
sorted(lst, key=lambda x: (x[0], -x[1]))
# [('a', 2), ('c', 3), ('h', 5), ('h', 4)]