2009-02-22 88 views
109

我有一个字典,其中每个键引用一个int值。取决于值将键排序到列表中的最佳方法是什么?在python中排序字典键

+7

此外,这就要求有关键排序,链接的答案是有关价值排序。 – ForeverWintr 2013-06-12 08:31:20

+0

下面的答案只返回一个排序的键列表(这是微不足道的)。对按值排序的“重复”问题的答案返回键/值对的排序列表(按值排序)。如果你想按键排序,只需使用0而不是operator.itemgetter()的参数。 – ScienceFriction 2013-12-24 17:28:54

回答

91
>>> mydict = {'a':1,'b':3,'c':2} 
>>> sorted(mydict, key=lambda key: mydict[key]) 
['a', 'c', 'b'] 
12
my_list = sorted(dict.items(), key=lambda x: x[1]) 
+1

@ user815423426你编辑我的文章`s/list/my_list /`,因为“列表是python中的关键字”。你的编辑是好的,但列表不是关键字(c.f. https://docs.python.org/3/reference/lexical_analysis.html#keywords),所以我的程序片段会(字节码)编译和运行。然而,它是`__builtins__`命名空间中的一个名称,并且使用名为list的全局变量(例如,名为list的名称与一个名为list的locale变量相比较并且可以覆盖它)是一种不好的做法。 `list = tuple`。 – 2014-06-29 14:29:15

2
[v[0] for v in sorted(foo.items(), key=lambda(k,v): (v,k))] 
346

我喜欢这一个:

sorted(d, key=d.get)