我在类的构造函数中作为类字段之一为其分配了一些键/值数据的字典中项目的索引顺序,每次运行程序时都会在运行时自动更改。
我还使用Cython调试器检查了程序,有趣的是实际上python本身改变了项目的索引!
我正在使用Python3.5.4
我在字典定义行之后准确地放了一个断点 here is a picture of this problem.
答案 0 :(得分:2)
字典不保留顺序(例如,如果您遍历字典的键或值,它们不一定以与您定义字典时相同的顺序显示)!如果您想保留订单,则必须使用collections.OrderedDict
。
答案 1 :(得分:1)
字典在Python中是无序的。它不是一个错误,它只是字典的工作方式。
您可能需要阅读collections.OrderedDict
这是Python 3.6中的更改列表。据我所知3.6中的序列可能会保留顺序,但你需要自己尝试一下。最好使用OrderedDict
。
答案 2 :(得分:0)
我认为您指的是字典中项目的顺序?
这是正常的,因为词典是无序的,因此项目的呈现顺序不需要遵循将项目添加到词典的顺序。类似地,迭代字典的键通常不会遵循创建的顺序。