我想在python3.X中对已排序的方法(内部)进行一些更改

时间:2016-12-28 15:22:52

标签: python python-3.x

我想根据值对字典进行排序,同时保持键在心中。我希望键按照我想要的顺序(键应该是反向排序的方式用于相同的值),但默认情况下,键是按照排序的方式相同的价值观我该怎么做?

 dictionary = {'t':1, 'p':1, 'r':1, 'o':2, 'a':1}
 dictonary = sorted(dictonary.items(), key=itemgetter(1,0))

我得到这样的东西。 (' o',2)('',1)(' r',1)(' p',1)(& #39; a',1) 但我想(' t',1)(' r',1)(' p',1)(' a',1 )(' o',2)对于相同的值,对相同的值进行反向排序。

1 个答案:

答案 0 :(得分:1)

您可以使用tuple (value, key) itemgetter对多个参数进行排序,例如:

>>> d = {'t':1, 'p':1, 'r':1, 'o':2, 'a':1}
>>> sorted(d.items(), key=itemgetter(1, 0))
[('a', 1), ('p', 1), ('r', 1), ('t', 1), ('o', 2)]

更新了 OP改变了预期的输出 您可以使用自己的lambda函数提供对订单的更多控制权:

>>> sorted(d.items(), key=lambda x: (-x[1], x[0]), reverse=True)
[('t', 1), ('r', 1), ('p', 1), ('a', 1), ('o', 2)]
相关问题