2012-03-31 69 views
1

我有一本詞典,我希望按字母順序對具有相同值的鍵進行排序。按字母順序排列具有相同值的鍵

例如:{薛寶釵:1,蘋果:1,DOM香蕉:1}

如何這些鍵按字母順序排序?

謝謝。

+0

考慮['sorted'](http://docs.python.org/library/functions.html#sorted)或['itertools'](http://docs.python.org /library/itertools.html)爲你的[字典排序](http://en.wikipedia.org/wiki/Lexicographical_order),一旦你確定它們屬於同一個重複組。 – MrGomez 2012-03-31 05:28:05

回答

4
>>> from collections import defaultdict 
>>> items = {'chai':1, 'apple':1, 'dom banana':1} 
>>> d = defaultdict(list) 
>>> for k,v in items.iteritems(): 
     d[v].append(k) 
>>> {k:sorted(v) for k,v in d.iteritems()} 
{1: ['apple', 'chai', 'dom banana']} 
+0

感謝您的代碼,但我有一個很大的關鍵範圍,我想輸出最大值的前10個鍵,但我有多個相同值的鍵。如何顯示已排序的鍵以及其他鍵本身(唯一值)還是已排序(與其他鍵共享相同的值)。 – 2012-03-31 06:48:00

+0

你應該問一個單獨的問題:D – jamylak 2012-03-31 06:53:58

+0

或者從來沒有想過,只是把它添加到這個問題我猜 – jamylak 2012-03-31 07:05:46

0
sorted(k for k,v in D.iteritems() if v == 1) 
+0

這將適用於該示例,但他也可能想要對不同的鍵進行排序。 – jamylak 2012-03-31 06:13:58

+0

@jamylak,那麼他可以添加一個變量或寫一個函數。這是一個*示例*,並且該問題未指定輸出的格式。 – 2012-03-31 16:35:24