项目的字典顺序索引在运行时自动更改

时间:2017-09-24 15:26:35

标签: python debugging dictionary indexing

我在类的构造函数中作为类字段之一为其分配了一些键/值数据的字典中项目的索引顺序,每次运行程序时都会在运行时自动更改。

我还使用Cython调试器检查了程序,有趣的是实际上python本身改变了项目的索引!

我正在使用Python3.5.4

我在字典定义行之后准确地放了一个断点 here is a picture of this problem.

3 个答案:

答案 0 :(得分:2)

字典不保留顺序(例如,如果您遍历字典的键或值,它们不一定以与您定义字典时相同的顺序显示)!如果您想保留订单,则必须使用collections.OrderedDict

答案 1 :(得分:1)

字典在Python中是无序的。它不是一个错误,它只是字典的工作方式。

您可能需要阅读collections.OrderedDict 这是Python 3.6中的更改列表。据我所知3.6中的序列可能会保留顺序,但你需要自己尝试一下。最好使用OrderedDict

答案 2 :(得分:0)

我认为您指的是字典中项目的顺序

这是正常的,因为词典是无序的,因此项目的呈现顺序不需要遵循将项目添加到词典的顺序。类似地,迭代字典的键通常不会遵循创建的顺序。