2015-09-17 137 views
-4
sorted_event_types={} 
     for key,value in sorted(event_types.items()): 
      sorted_event_types[key]=value 


(Pdb) print sorted_event_types 
{'ch': 1, 'eh': 2, 'oh': 3, 'ah': 0, 'as': 1, 'cs': 0, 'os': 5, 'es': 9} 
(Pdb) event_types 
{'as': 1, 'ch': 1, 'eh': 2, 'oh': 3, 'cs': 0, 'ah': 0, 'os': 5, 'es': 9} 

我想排序字典,並保持它的方式。排序字典

輸出應該{'ah': 1, 'as': 1, 'ch': 2, 'cs': 3, 'eh': 0, ...}

+3

那麼究竟是什麼問題? – Mureinik

+0

查看[OrderedDict](https://docs.python.org/3/library/collections.html#collections.OrderedDict)(儘管我可能會將它變成一個列表,而不是我喜歡的分隔) – user2864740

+0

可悲的是,重複問題OrderedDict(是否合適)答案相當埋藏.. – user2864740

回答

3

詞典是無序集合。您可以使用排序後的數據創建collections.OrderedDict以保持訂單:

>>> import collections 
>>> sorted_event_types = collections.OrderedDict(sorted(event_types.items())) 
>>> print sorted_event_types 
OrderedDict([('ah', 0), ('as', 1), ('ch', 1), ('cs', 0), ('eh', 2), ('es', 9), ('oh', 3), ('os', 5)]) 
2

字典沒有秩序任何意義,他們是關鍵的無序集合:值對。

如果要維護訂單,則應使用collections.OrderedDict。示例 -

import collections 
sorted_event_types = collections.OrderedDict() 
for key,value in sorted(event_types.items()): 
    sorted_event_types[key]=value