我有python普通字典。在此,不保留插入顺序。我需要按插入顺序保留元素。我知道OrderedDict
可以完成这项工作。但是,我的问题是我需要从已经存在的普通字典中获取有序字典。这个字典无法更改。以下是我的普通词典:
d = {'tag': {'a': 1, 'c': {'k': 8}, 'b': 7, 'n': 6}}
在python中是否有任何方法可以保持现有字典中元素的顺序?任何帮助表示赞赏。使用python 2.7
答案 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