我有一个'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]
我该怎么做?
答案 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)))