Python OrderedDict不保留元素顺序

我试图创build一个OrderedDict对象,但是我创build它,比元素都混乱。

这就是我所做的:

from collections import OrderedDict od = OrderedDict({(0,0):[2],(0,1):[1,9],(0,2):[1,5,9]}) 

元素不会保留在我分配的顺序中

 od OrderedDict([((0, 1), [1, 9]), ((0, 0), [2]), ((0, 2), [1, 5, 9])]) 

docs.python.org没有一个例子,我不知道为什么顺序变得混乱。 任何帮助是极大的赞赏。

你的问题是,你正在构造一个dict来给OrderedDict初始数据 – 这个dict 不会存储任何的顺序,所以在它到达OrderedDict之前,这个顺序就会丢失。

解决的办法是从一个有序的数据types – 最简单的是一个tuple s list

 >>> from collections import OrderedDict >>> od = OrderedDict([((0, 0), [2]), ((0, 1), [1, 9]), ((0, 2), [1, 5, 9])]) >>> od OrderedDict([((0, 0), [2]), ((0, 1), [1, 9]), ((0, 2), [1, 5, 9])]) 

值得注意的是,这就是为什么OrderedDict使用它为它的string表示所做的语法的原因 – string表示应该尝试成为有效的Python代码,以便在可能的情况下重现对象,这就是为什么输出使用元组列表而不是字典。