当前位置: 首页 > 面试题库 >

如何排序OrderedDict的OrderedDict?

太叔栋
2023-03-14
问题内容

我正在尝试通过 “深度” 键对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方法。 解决方法: