2

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

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

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

4

2 回答 2

8

简短回答:这是不可能的,一旦你创建了字典,它就没有顺序了。

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

于 2012-04-10T04:51:33.870 回答
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 
于 2015-07-05T14:33:18.800 回答