Python字典递减排序



我想对字典进行递减排序。

dic = { "one" = 5, "two" = 8, "three" = 1, "four" = 3}

输出应该是:

("two", 8)
("one", 5)
("four", 3)
("three", 1)

最简单的方法是什么?

略有不同的方式:

>>> dic = { "one" : 5, "two" : 8, "three" : 1, "four" : 3}
>>> sorted(dic.items(), key = lambda x:x[1],reverse = True)
[('two', 8), ('one', 5), ('four', 3), ('three', 1)]

sorted支持关键字reverse。对于反向排序顺序,将其设置为True

>>> dic = {"one": 5, "two": 8, "three": 1, "four": 3}

单向:

>>> [(k, dic[k]) for k in sorted(dic, key=dic.get, reverse=True)]
[('two', 8), ('one', 5), ('four', 3), ('three', 1)]

或:

>>> from operator import itemgetter
>>> sorted(dic.items(), key=itemgetter(1),  reverse=True)
[('two', 8), ('one', 5), ('four', 3), ('three', 1)]

这里itemgetter(1)lambda x: x[1]的作用相同,后者又等效于:

def get_index_one(x):
    return x[1]

>>> sorted(dic.items(), key=get_index_one,  reverse=True)
[('two', 8), ('one', 5), ('four', 3), ('three', 1)]

最新更新