2015-09-17 139 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