我正在尝试通过 “深度” 键对OrderedDict中的OrderedDict进行排序。有什么解决方案可以对Dictionary进行排序吗?
OrderedDict([
(2, OrderedDict([
('depth', 0),
('height', 51),
('width', 51),
('id', 100)
])),
(1, OrderedDict([
('depth', 2),
('height', 51),
('width', 51),
('id', 55)
])),
(0, OrderedDict([
('depth', 1),
('height', 51),
('width', 51),
('id', 48)
])),
])
排序的字典应如下所示:
OrderedDict([
(2, OrderedDict([
('depth', 0),
('height', 51),
('width', 51),
('id', 100)
])),
(0, OrderedDict([
('depth', 1),
('height', 51),
('width', 51),
('id', 48)
])),
(1, OrderedDict([
('depth', 2),
('height', 51),
('width', 51),
('id', 55)
])),
])
知道如何获得它吗?
由于OrderedDict
按插入顺序排序,因此您必须创建一个新的。
在您的情况下,代码如下所示:
foo = OrderedDict(sorted(foo.iteritems(), key=lambda x: x[1]['depth']))
有关更多示例,请参见http://docs.python.org/dev/library/collections.html#ordereddict-
examples-and-
recipes
。
请注意,对于Python 3,您需要使用.items()
而不是.iteritems()
。
本文向大家介绍Python OrderedDict字典排序方法详解,包括了Python OrderedDict字典排序方法详解的使用技巧和注意事项,需要的朋友参考一下 很多人认为python中的字典是无序的,因为它是按照hash来存储的,但是python中有个模块collections(英文,收集、集合),里面自带了一个子类 OrderedDict,实现了对字典对象中元素的排序。请看下面的实例:
问题内容: 我有这个: 如果我这样做: 然后我得到这个: 但我想要这个: 无需创建新字典。 问题答案: 在Python 2中没有执行此操作的内置方法。如果需要此操作,则需要编写一种以O(1)复杂度在内部操作的方法/函数。 对于Python 3.2和更高版本, 应 使用方法。该方法接受一个参数,该参数指示元素将被移动到的底部()还是顶部()。 最后,如果您想要一种快速,肮脏且 缓慢的 解决方案,则可
问题内容: 我可以在python中扩展语法以获取其他字典的dict理解,例如模块中的OrderedDict或继承自我的类型吗? 仅仅重新绑定名称显然是行不通的,理解语法仍然为您提供了理解和文字的普通旧字典。 那么,如果可能的话,我将如何去做呢?如果它仅适用于CPython,就可以了。对于语法,我想我会像在上那样使用前缀尝试。 注意: 当然,我们可以使用生成器表达式来代替,但是我更感兴趣的是查看py
问题内容: 我编写了以下Python代码: 现在我明白了: 它以哪种方式订购? 它可能会帮助您获得我的ls -l输出: 它不是按文件名或大小排序的。 相关链接:, 问题答案: 它可能根本没有排序,而是使用条目在文件系统中出现的顺序,即使用时获得的顺序。(至少在我的机器上,这产生与列表匹配相同的顺序)。
本文向大家介绍Python的collections模块中的OrderedDict有序字典,包括了Python的collections模块中的OrderedDict有序字典的使用技巧和注意事项,需要的朋友参考一下 如同这个数据结构的名称所说的那样,它记录了每个键值对添加的顺序。 输出: 如果初始化的时候同时传入多个参数,它们的顺序是随机的,不会按照位置顺序存储。 除了和正常的 dict 相同的
问题内容: 我想排序CopyOnWriteArrayList。但是当我尝试运行以下代码时 它在扔unsorted operation exception。 提前致谢。 问题答案: 但是CopyOnWriteArrayList的ListIterator不支持remove,set或add方法。 解决方法: