Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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_Numpy_Dictionary - Fatal编程技术网

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