如何在python中维护嵌套字典的顺序(不是简单的,而是嵌套的)?

如何在python中维护嵌套字典的顺序(不是简单的,而是嵌套的)?,python,dictionary,nested,python-2.x,ordereddictionary,Python,Dictionary,Nested,Python 2.x,Ordereddictionary,我刚刚将另一个程序生成的字典复制到python程序(用python代码硬编码) 但在阅读词典时,顺序发生了变化,这就产生了问题 如果我也使用OrderedDict,则只保存顶级顺序,而不保存内部字典的顺序 我需要这个顺序,因为我正在基于字典数据生成一个树,这样当我从该树中读取时,我将得到相同的顺序。我使用的是Python2版本 谢谢。这是python的缺点吗 编辑:我正在使用这条单行语句: a = OrderedDict({'b':{'d':3, 'c':4}, 'a':2}) 我只是举了一个

我刚刚将另一个程序生成的字典复制到python程序(用python代码硬编码)

但在阅读词典时,顺序发生了变化,这就产生了问题

如果我也使用OrderedDict,则只保存顶级顺序,而不保存内部字典的顺序

我需要这个顺序,因为我正在基于字典数据生成一个树,这样当我从该树中读取时,我将得到相同的顺序。我使用的是Python2版本

谢谢。这是python的缺点吗


编辑:我正在使用这条单行语句:

a = OrderedDict({'b':{'d':3, 'c':4}, 'a':2})

我只是举了一个简单的字典为例,但我的实际字典非常大,所以我不能手动将OrderedDict添加到所有内部字典中,以使其有序。在Python2中寻找解决方案,如果不可能,请在Python3中提供您的内部字典也应该是OrderedDict

也可以使用关联列表(键值对列表)。 我认为这更接近于你想要做的:尊重确切的顺序或你读到的内容

另一种方法是维护一个列表(用于订单)和一个dict来访问元素。这必须在每一个级别上完成。

在Python2.x中字典没有排序 因此,任何将数据作为常规字典读入的解决方案对您来说都是无用的。您需要首先关注工作流的这一方面,因为您没有提供任何信息或代码

将元组列表与
OrderedDict
这是初始化订购的ICT的方法不正确:

a = OrderedDict({'b': {'d':3, 'c':4}, 'a':2})
from collections import OrderedDict

a = OrderedDict([('b', OrderedDict([('b', 3), ('c', 4)])), ('a', 2)])
这尤其失败,因为您提供的字典在Python2.x中是无序的。此外,您还没有尝试将内部字典设置为
OrderedDict

相反,您需要将有序的元组列表提供给外部
orderedict
和内部
orderedict

a = OrderedDict({'b': {'d':3, 'c':4}, 'a':2})
from collections import OrderedDict

a = OrderedDict([('b', OrderedDict([('b', 3), ('c', 4)])), ('a', 2)])

我如何使内心有序,阅读本身就是创造问题。你如何阅读它?用你的代码解析?如果可能,您应该使用OrderedDict或列表。发布用于OrderedDict的代码后,您可能忘了将嵌套的dict也设置为OrderedDict。我使用的是以下单行语句:a=OrderedDict({'b':{'d':3,'c':4},'a':2})谢谢。但是从另一个java文件复制的字典(树节点结构)太大,我无法手动更改所有子字典。你能告诉我这在Python3中是否可以直接实现(如果不是在2中),这样我就可以在我的独立脚本中使用Python3了。@KalyanKumar,对不起,我不理解你的问题。如上所述,您的问题是理解为什么
OrderedDict({'b':{'d':3,'c':4},'a':2})
不能像您所期望的那样保持顺序。如果你还需要别的东西,请说清楚一点。