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]
我怎样才能做到这一点?
反转排序,使用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)