2009-02-22 140 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)