2015-09-11 115 views
1

值對我有一本字典作爲蟒蛇:排序鍵:基於關鍵

i={106:0.33,107:0.21,98:0.56} 

我想關鍵排序:基於密鑰值對。我期待輸出,看起來像以下:

{98:0.56, 106:0.33, 107:0.21} 

當我使用這個:

od = collections.OrderedDict(sorted(i.items())) 
    print(od) 

我得到錯誤的輸出:

[(98,0.56),(106,0.33),(107,0.21)] 

任何人都可以請幫助我正確的代碼爲了這?

回答

2

OrderedDict會記住將項目添加到字典的順序,而不是排序順序。

但是,您可以輕鬆地從常規詞典中創建排序列表。例如:

>>> list1={106:0.33,107:0.21,98:0.56} 
>>> sorted(list1.items()) 
[(98, 0.56), (106, 0.33), (107, 0.21)] 

或者,如果你想在一個OrderedDict,只是應用排序後OrderedDict:

>>> from collections import OrderedDict 
>>> 
>>> list1={106:0.33,107:0.21,98:0.56} 
>>> OrderedDict(sorted(list1.items())) 
OrderedDict([(98, 0.56), (106, 0.33), (107, 0.21)]) 

但常規字典沒有排序順序的概念,所以你不能排序字典本身。

但是,如果你真的想要的顯示,你可以創建自己的類:

>>> from collections import OrderedDict 
>>> class MyDict(OrderedDict): 
...  def __repr__(self): 
...   return '{%s}' % ', '.join(str(x) for x in self.items()) 
... 
>>> list1={106:0.33,107:0.21,98:0.56} 
>>> MyDict(sorted(list1.items())) 
{(98, 0.56), (106, 0.33), (107, 0.21)} 
+0

我想輸出爲{98:0.56,106:0.33,107:0.21}。我如何得到這個? –

+0

@Explore_SDN - 添加自定義類示例 –

+0

合理! :) 謝謝。 –