我是python的新手,我想按第一个索引按非递减顺序对python中的列表进行排序,但是如果第一个索引保持相同的值,则按第二个索引按递减顺序排序。
ex [[3,3],[3,2],[1,3]]
输出[[1,3],[3,3][3,2]]
Ex2[7,0,4,4,7,5,0,6,1,5,2]
输出[ 4,4,5,2,5,0,6,1,7,1,7,0]
在c++中,我使用这个函数作为键
static bool lessThan(vector<int> &l , vector<int> &r)
{
if (r[0] == l[0])
return l[1]>r[1];
return l[0]<r[0];
}但是在python上,key函数有不同的行为。
发布于 2020-06-08 05:16:47
由于您只是对数字进行排序,所以可以走捷径,只需取元组中第二个元素的负数:
l = [[3,3],[3,2],[1,3], [3,5], [3,0], [3, -1]]
sorted(l, key=lambda x: (x[0], -x[1]))
# [[1, 3], [3, 5], [3, 3], [3, 2], [3, 0], [3, -1]]https://stackoverflow.com/questions/62255335
复制相似问题