我有python普通字典。在这种情况下,不保留插入顺序。我需要保持元素的插入顺序。我知道OrderedDict
可以完成这项工作。但是,我的问题是我需要从已经存在的普通字典中获取有序字典。无法更改此词典。以下是我的普通字典:
d = {'tag': {'a': 1, 'c': {'k': 8}, 'b': 7, 'n': 6}}
python中有什么方法可以保持现有字典中元素的顺序吗?任何帮助表示赞赏。使用 python 2.7
我有python普通字典。在这种情况下,不保留插入顺序。我需要保持元素的插入顺序。我知道OrderedDict
可以完成这项工作。但是,我的问题是我需要从已经存在的普通字典中获取有序字典。无法更改此词典。以下是我的普通字典:
d = {'tag': {'a': 1, 'c': {'k': 8}, 'b': 7, 'n': 6}}
python中有什么方法可以保持现有字典中元素的顺序吗?任何帮助表示赞赏。使用 python 2.7
简短回答:这是不可能的,一旦你创建了字典,它就没有顺序了。
项目是根据它们的哈希而不是它们的插入顺序存储的,您需要OrderedDict
在开始时创建它,以便它可以在插入项目时记录插入顺序。
好的,让我们直截了当..理论上这是不可能的。
但只是为了笑..
由于您自己正在查看 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