我有一个这样的字典列表:
[{"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降序排序吗?
答案 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}]