Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中,如何对升序中的第一列进行排序,如果相同,如何对降序中的第二列进行排序?_Python_Sorting_Reverse - Fatal编程技术网

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

在python中,如何对升序中的第一列进行排序,如果相同,如何对降序中的第二列进行排序?,python,sorting,reverse,Python,Sorting,Reverse,我有一个列表[('a',2),('h',5),('c',3),('h',4)]。我想以这样一种方式对它进行排序,即每个元组的第一个条目是按升序排列的。如果有重复,则根据Python中的降序第二个元组条目。 我想得到这个: [('a',2),('c',3),('h',5),('h',4)] 由于元组中的第二个元素是数字(因此一元-运算符的有效操作数),因此可以使用以下简单的键函数: lst = [('a', 2), ('h', 5), ('c', 3), ('h', 4)] sorted(lst

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

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

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

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)]