我正在尝试使用OrderedDict,但是它总是被乱序创建。例如,

from collections import OrderedDict
OrderedDict(a=1,b=2,c=3)

产量
OrderedDict([('a', 1), ('c', 3), ('b', 2)])

而不是预期的
OrderedDict([('a', 1), ('b', 2), ('c', 3)])

如何确保它以我想要的正确顺序创建?

最佳答案

collections.OrderedDict跟踪添加元素的顺序。这将在循环中正常工作:

c = collections.OrderedDict()
for a,b in zip('abc', (1,2,3)):
    c[a] = b

但是,表达式OrderedDict(a=1,b=2,c=3)通过将几个关键字参数传递给其构造函数来创建OrderedDict。在Python 2.7中,不能保证关键字参数的顺序。如果需要的话,您必须转到Python 3.6,该版本实现PEP 468 Preserving the order of **kwargs in a function

关于python - 不订购OrderedDict吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41866911/

10-12 20:59