首先按键的升序对字典排序,然后按另一个键的降序排序

时间:2020-10-30 12:20:30

标签: python

我有一个这样的字典列表:

[{"x" : 5 , "y" : 7} , {"x" : 4 , "y" : 3} , {"x" : 4 , "y" : 7}]

我想先按x的升序对它们进行排序,然后按y的降序对它们进行排序,以使结果为

[{"x" : 4 , "y" : 7} , {"x" : 4 , "y" : 3} , {"x" : 5 , "y" : 7}]

我可以按升序对两者进行排序

sorted(a , key=lambda k: (k['x'] , k['y']))

或按降序排列

sorted(a , key=lambda k: (k['x'] , k['y']) , reverse=True)

这里有一个好方法来按x升序和y降序排序吗?

1 个答案:

答案 0 :(得分:2)

如果您要按数字排序,则只需乘以-1即可颠倒顺序:

>>> a = [{"x" : 5 , "y" : 7} , {"x" : 4 , "y" : 3} , {"x" : 4 , "y" : 7}]
>>> sorted(a , key=lambda k: (k['x'] , k['y'] * -1))
[{'x': 4, 'y': 7}, {'x': 4, 'y': 3}, {'x': 5, 'y': 7}]

您还可以在变量前添加-,其作用与乘以-1相同:

>>> sorted(a , key=lambda k: (k['x'] , -k['y']))
[{'x': 4, 'y': 7}, {'x': 4, 'y': 3}, {'x': 5, 'y': 7}]