对整数先正后负排序

Dil*_*rix 1 python sorting dictionary numpy

我有一个'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]
Run Code Online (Sandbox Code Playgroud)

但我想最终得到以下任一结果:
[1, 2, 10, 100, -5, -2, -1]
或者
[1, 2, 10, 100, -1, -2, -5]

我怎样才能做到这一点?

Pad*_*ham 5

反转排序,使用x >= 0先获取正数,-将负数放在最后,并保持正数从低到高的顺序。

l = [-5, -2, -1, 1, 2, 10, 100]

print(sorted(l, key=lambda x: (x >= 0, -x), reverse=True))
Run Code Online (Sandbox Code Playgroud)

对于你的字典:

OrderedDict(sorted(data.items(), key=lambda tt: (tt[1].num >= 0, -tt[1].num , reverse=True)))
Run Code Online (Sandbox Code Playgroud)