2016-03-02 83 views
-1

我想首先由值,然後通過密鑰進行排序的字典。關鍵是一個字符串。排序蟒蛇字典內,通過價值首先然後按鍵

例,

>>> words = {'fall':4, 'down':4, 'was':3, 'a':3, 'zebra':2, 'bitter':1, 'betty':1} 
>>> sorted(words.items(), key=itemgetter(1,0), reverse=True) 
[('fall', 4), ('down', 4), ('was', 3), ('a', 3), ('zebra', 2), ('bitter', 1), ('betty', 1)] 

正如你可以在上面看到,該字典是過得去值排序,但不是重點。

謝謝。

編輯:我忘了指出的是,我想要的值來獲得排序從上到下和鍵底部到頂部。

+1

它看起來排序我 - 4,4,3,3,2,1,1,如果值是相等的它們由鍵進行排序。一切都以相反的順序,因爲'反向= TRUE' – nikihub

+0

http://stackoverflow.com/questions/9001509/how-can-i-sort-a-dictionary-by-key – zedfoxus

+0

'而不是由key'是的。你還有什麼? – njzk2

回答

1

這應該做的伎倆。利用這些值是數字的事實。

from operator import itemgetter 

words = {'fall':4, 'down':4, 'was':3, 'a':3, 'zebra':2, 'bitter':1, 'betty':1} 
sorted_words = [v for v in sorted(words.iteritems(), key=lambda(k, v): (-v, k))] 
print(sorted_words) 

輸出:

[('down', 4), ('fall', 4), ('a', 3), ('was', 3), ('zebra', 2), ('betty', 1), ('bitter', 1)] 
+0

不幸的是,它在一般情況下不起作用(當'-'沒有爲對象定義或者具有不同含義時)。 – nikihub

+0

謝謝。我可以去掉反向= True和做-v – Vijay

+0

這是正確的,但在他的案件他的價值觀是數字,所以它的工作原理爲OP – Kordi