Python 将整数排序为正然后为负
我有一个Python 将整数排序为正然后为负,python,sorting,numpy,dictionary,Python,Sorting,Numpy,Dictionary,我有一个'name':Obj条目的字典,其中每个Obj都有一个num参数,该参数采用带符号的整数。我想将其转换为一个OrderedDict,其中条目按正数Obj.num值排序,然后按负数排序 总体排序没有问题: >>> data = OrderedDict(sorted(data.items(), key=lambda tt: tt[1].num)) >>> print([val.num for key, val in data.items()]) [-5,
'name':Obj
条目的字典,其中每个Obj
都有一个num
参数,该参数采用带符号的整数。我想将其转换为一个OrderedDict
,其中条目按正数Obj.num
值排序,然后按负数排序
总体排序没有问题:
>>> data = OrderedDict(sorted(data.items(), key=lambda tt: tt[1].num))
>>> print([val.num for key, val in data.items()])
[-5, -2, -1, 1, 2, 10, 100]
但我想以任何一种方式结束:[1,2,10100,-5,-2,-1]
或
[1,2,10100,-1,-2,-5]
怎么做?反向排序,使用
x>=0
首先获取正数,-
将负数放在末尾,并保持正数从低到高的顺序
l = [-5, -2, -1, 1, 2, 10, 100]
print(sorted(l, key=lambda x: (x >= 0, -x), reverse=True))
为了你的口述:
OrderedDict(sorted(data.items(), key=lambda tt: (tt[1].num >= 0, -tt[1].num , reverse=True)))
是的,我忘了
-x
,应该给你[1,2,10100,-5,-2,-1]
太棒了-谢谢!当key
是一个元组时会发生什么情况?@dilitiummatrix,编辑应该这样做,同样的逻辑只是访问元组元素。为什么不只是排序(l,key=lambda x:(x<0,x))
?