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