词典到Python的字典

问题描述:

好的,这应该是简单的。我有3本字典。他们都是制作,订购,并满足我的满意,但我想把它们全部放在一本总体字典中,以便我可以更轻松,更高效地参考和操作它们。词典到Python的字典

Layer0 = {} 
Layer1 = {} 
Layer2 = {} 

他们在这里创建时,事后我有气无力地试图基于SO问题不同的事情:

Layers = {Layer0, Layer1, Layer2} 

它提出了一个语法错误

Layers = {'Layer0', 'Layer1', 'Layer2'} 

其提出的另一个语法错误

Layers是我正在尝试c的字典reate将有所有先前制作的字典在其中)

我在SO上发现的所有其他示例都与在字典中创建字典以填充它们(或同时填充它们)有关,并且由于我已经编码了一个大的制作这些字典的行数,我宁愿将它们放入字典中,而不是重写代码。

投入时,请将字典的顺序保存最好Layers

有谁知道这是可能的,我应该怎么办呢?

Dictionary项目有一个键和一个值。

Layers = {'Layer0': Layer0, 'Layer1': Layer1, 'Layer2': Layer2} 
+0

哇,现在我觉得很傻。谢谢。 – Ason 2012-08-15 18:37:02

+0

11分钟,直到选中标记。 – Ason 2012-08-15 18:37:32

请记住,由于字典是散列表(即从您的密钥名称到唯一散列值的映射),所以字典没有顺序。使用.keys()或.values()生成一个列表,该列表确实有顺序,但字典本身不包含。

所以当你说“如果字典的顺序在放入图层时被保留下来最好” - 这并不意味着什么。例如,如果将字典从“Layer1,Layer2,Layer3”重命名为“A,B,C”,您将看到Layers.keys()按照“A,C,B”的顺序打印。无论您在构建字典时使用的顺序如何,都是如此。所有这一切都表明,“C”的散列值小于“B”的散列值,并且它不会告诉你任何关于字典结构的信息。

这也是为什么你不能直接迭代字典(你必须迭代例如一个键列表)。

作为一个方面说明,这个散列函数允许字典做疯狂的快速查找。一个好的散列函数会给你持续的[O(1)]查找时间,这意味着你可以在相同的时间内检查一个给定的项目是否在你的字典中,无论这个字典是包含十个项目还是一千万个项目。很酷。

+1

+1感谢您澄清字典顺序!我显然还在学习Python,可以使用我可以获得的所有帮助。 – Ason 2012-08-15 20:28:41