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