2015-12-07 157 views
1

我想排序我的字典递减。Python字典递减排序

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

输出应该是:

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

什么是最简单的方法是什么?

+0

我想与此代码做到这一点:对于项排序(dic.items(),键=拉姆达X:X [1]):但是我不能把它弄干,这样我才能把我的字典排序DECREASING – Python123

+0

字典建筑是不对的。它应该是:'dic = {“one”:5,“two”:8,“three”:1,“four”:3}' – kmonsoor

+0

btw这个问题看起来像是一个班级作业。没有显示研究工作。 – kmonsoor

回答

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)] 
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)]