您的问题是,您正在构造一个
dict将初始数据提供给的
OrderedDict-这
dict不会
存储任何订单,因此订单在到达之前就丢失了
OrderedDict。
解决方案是从有序数据类型构建-最简单的
list是
tuple的:
>>> from collections import OrderedDict>>> od = OrderedDict([((0, 0), [2]), ((0, 1), [1, 9]), ((0, 2), [1, 5, 9])])>>> odOrderedDict([((0, 0), [2]), ((0, 1), [1, 9]), ((0, 2), [1, 5, 9])])
值得注意的是,这就是为什么
OrderedDict使用它的字符串表示形式的语法的原因-
字符串表示形式应尽可能使用有效的Python代码来重现对象,这就是为什么输出使用元组列表而不是dict的原因。
编辑:从Python
3.6开始,
kwargs是ordered,因此,如果您使用的是最新的Python版本,则可以改用关键字参数。
从3.7开始,对于
dicts也是如此(在3.6中的CPython中也是如此,但是语言规范未指定它,因此
OrderedDict仍然需要使用来实现兼容性)。这意味着,如果您可以假设一个3.7+的环境,则通常可以
OrderedDict完全放弃,或者
dict如果需要特定功能(例如:为了平等而定),可以从常规构造一个。



