我正在尝试创建一个OrderedDict对象,但我不会立即创建它,否则所有元素都会混乱。
这是我的工作:
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
。
解决方案是从有序数据类型构建-最简单的list
是tuple
的:
>>> 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
使用它的字符串表示形式的语法的原因-
字符串表示形式应尽可能使用有效的Python代码来重现对象,这就是为什么输出使用元组列表而不是dict的原因。
编辑:从Python
3.6开始,kwargs
是ordered
,因此,如果您使用的是最新的Python版本,则可以改用关键字参数。
从3.7开始,对于dict
s也是如此(在3.6中的CPython中也是如此,但是语言规范未指定它,因此OrderedDict
仍然需要使用来实现兼容性)。这意味着,如果您可以假设一个3.7+的环境,则通常可以OrderedDict
完全放弃,或者dict
如果需要特定功能(例如:为了平等而定),可以从常规构造一个。
问题内容: 我有一个哈希表。values()方法以与插入顺序不同的顺序返回值。如何获得与插入顺序相同的值?使用LinkedHashmap是一种替代方法,但不同步。 问题答案: 使用。 接口的哈希表和链表的实现,具有可预测的迭代顺序。此实现的不同之处在于,它维护一个遍历其所有条目的双向链接列表。此链表定义了迭代顺序,通常是将键插入映射中 的顺序 ( insert-order )。请注意,如果将密钥
问题内容: 主要目的是使徽标文本和菜单保持不刷新,而不会刷新页面或将内容从页面加载到另一个页面时。同样,菜单状态应从一个页面保存到另一个页面。 我在这里找到了可以解决问题的可行解决方案( 您可以使用ajax来获取更新的内容,并使用jQuery将新内容放到页面上,而完全避免刷新。这样做,页面将保持不变。 @ jfriend00) 因此,我尝试使用Ajax插件(称为[AWS)。在AWS选项页,我(想)
问题 怎样在一个序列上面保持元素顺序的同时消除重复的值? 解决方案 如果序列上的值都是 hashable 类型,那么可以很简单的利用集合或者生成器来解决这个问题。比如: def dedupe(items): seen = set() for item in items: if item not in seen: yield item
问题内容: 如果我有以下Python代码 将保证始终是,或者是临时元件的其他排序可能吗? 问题答案: 是的,python列表中元素的顺序是持久的。
...我正在尝试写一个我能写的最简单/优雅的解决方案(更喜欢不创建新的数组/列表,旋转多个元素等),下面是我的... ...我的提交失败了,因为我的第一个分区不是而是,所以在以后的分区中,我的第一次合并是而不是,因为我的算法没有保持左分区元素的顺序(即)。 我的算法从结束到开始迭代,不包括起始元素(枢轴)... ->数据透视为5,数据透视索引为7(超出界限) ->2不大于5,跳过 ->9大于5,透
我正在用JAXB在列表中解组元素序列,见下文。 XML文件 Java-代码 但是,我有点担心textPoint元素的固有顺序,因为它们在XML文件中的顺序很好,但是没有元素(例如ID),我可以通过对它们进行排序。尽管如此,它似乎可以按照与XML文件相同的顺序对它们进行解组,因此不必担心这一点吗?