Python普通字典以有序字典转换

时间:2012-04-10 04:41:34

标签: python python-2.7 dictionary ordereddictionary

我有python普通字典。在此,不保留插入顺序。我需要按插入顺序保留元素。我知道OrderedDict可以完成这项工作。但是,我的问题是我需要从已经存在的普通字典中获取有序字典。这个字典无法更改。以下是我的普通词典:

d = {'tag': {'a': 1, 'c': {'k': 8}, 'b': 7, 'n': 6}}

在python中是否有任何方法可以保持现有字典中元素的顺序?任何帮助表示赞赏。使用python 2.7

2 个答案:

答案 0 :(得分:8)

简答:这是不可能的,一旦你创建了它没有订单的字典。

项目是根据其哈希而不是其插入顺序存储的,您需要在开始时创建OrderedDict,以便在插入项目时记录插入顺序。

答案 1 :(得分:0)

好吧,让我们直截了当......理论上它是不可能的。

但只是为了笑......

既然你自己正在查看shell输出并找出顺序(我假设这样,那你自己怎么会知道订单?)所以我们走了......

import re

d = {'tag': {'a': 1, 'b': 7, 'c': {'k': 8}, 'n': 6}}
tags = d['tag']
sorted_keys = set(re.findall(r"'(\w)':", str(tags))).intersection(tags.keys())

print sorted_keys  # You can form your OrderedDict