Python copying defaultdict to dict with new order of key
我有一个未按键值排序的默认dict:
1 2 3  | d = defaultdict(int) ... defaultdict(<type 'int'>, {'2014-06-30': 2, '2013-04-18': 7, '2013-04-19': 9})  | 
排序键列表:
1  | tmp = sorted(d.keys())  | 
号
并创建新的dict:
1 2 3  | nd = {} for i in tmp: nd[i] = d[i]  | 
但结果我得到了源dict的精确副本。尽管我按新的顺序添加了元素。
1 2 3 4 5 6 7  | from collections import OrderedDict   ord_dict = OrderedDict() for i in tmp: ord_dict[i] = d[i] print(ord_dict) OrderedDict([('2013-04-18', 7), ('2013-04-19', 9), ('2014-06-30', 2)])  | 
或者正如@jon clements简单建议的那样:
1  | OrderedDict(sorted(d.iteritems()))  | 
号
或使用python 3的
python字典不能这样工作。字典实际上是一个散列映射,这意味着值将根据键散列而不是放置项的顺序放在dict中的一个点上,并且在迭代时,将不会得到"有序dict"。改用ordereddict类