2013-04-30 150 views
2

我有屬於格式的項目的字典:排序字典由鍵,值(元組)

{...'key': ('value', '##')...}其中##是整數。

現在我要進行排序,並通過關鍵的價值打印,然後排序和打印,最後排序及列印##的數量。我環顧四周SO和發現,並試圖代碼類似於此:

print(sorted(aDictionary))

但這只是打印出每個條目的鍵(但排序)。我怎樣才能按鍵,值,然後##排序?

回答

2

嘗試使用自定義的比較:

key1 = lambda (key, (value, hash)): key 
key2 = lambda (key, (value, hash)): value 
key3 = lambda (key, (value, hash)): hash 

使用它像:

print(sorted(aDictionary.items(), key=key1)) 

BTW上述依賴於tuple unpacking in function parameters;你可以改換爲Python 3,如:

key1 = lambda item: item[0][0] 
key2 = lambda item: item[1][0] 
key3 = lambda item: item[1][1] 
1

您需要使用的物品,而不是密鑰(這是迭代的時候默認):

print(sorted(x.iteritems())) 

您可能也有興趣在OrderedDict:http://docs.python.org/2/library/collections.html#collections.OrderedDict

在這種情況下,默認排序可能會工作,但你可能需要一個定製key方法:

key = lambda (k, (v0, v1)): (k, v0, v1) 
sorted(x.iteritems(), key=key)