我有一个按键值未排序的defaultdict:
d = defaultdict(int)
...
defaultdict(<type 'int'>, {'2014-06-30': 2, '2013-04-18': 7, '2013-04-19': 9})
按键排序列表:
tmp = sorted(d.keys())
创建新词典:
nd = {}
for i in tmp:
nd[i] = d[i]
但结果我得到了源dict的精确副本。 虽然我按新顺序添加了元素。
答案 0 :(得分:3)
dict
个实例是任意排序的。如果您需要特定订单,请改用collections.OrderedDict
。
答案 1 :(得分:1)
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所暗示的那样:
OrderedDict(sorted(d.iteritems()))
或OrderedDict(sorted(d.items()))
使用python 3
答案 2 :(得分:0)
python词典无法正常工作。字典实际上是一个哈希映射,这意味着值根据键哈希放在dict中的一个位置,而不是你放置项目的顺序,在迭代时,你不会得到&#34;命令dict&#34;。请改用OrderedDict类