排序整数为正,然后是负数

时间:2016-06-12 01:31:05

标签: 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, -2, -1, 1, 2, 10, 100]

但我想最终得到:
[1, 2, 10, 100, -5, -2, -1]

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

我该怎么做?

1 个答案:

答案 0 :(得分:3)

反转排序,使用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)))