我有屬於格式的項目的字典:排序字典由鍵,值(元組)
{...'key': ('value', '##')...}
其中##
是整數。
現在我要進行排序,並通過關鍵的價值打印,然後排序和打印,最後排序及列印##的數量。我環顧四周SO和發現,並試圖代碼類似於此:
print(sorted(aDictionary))
但這只是打印出每個條目的鍵(但是排序)。我怎樣才能按鍵,值,然後##排序?
我有屬於格式的項目的字典:排序字典由鍵,值(元組)
{...'key': ('value', '##')...}
其中##
是整數。
現在我要進行排序,並通過關鍵的價值打印,然後排序和打印,最後排序及列印##的數量。我環顧四周SO和發現,並試圖代碼類似於此:
print(sorted(aDictionary))
但這只是打印出每個條目的鍵(但是排序)。我怎樣才能按鍵,值,然後##排序?
嘗試使用自定義的比較:
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]
您需要使用的物品,而不是密鑰(這是迭代的時候默認):
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)