小编典典

如何排序OrderedDict的OrderedDict?

python

我正在尝试通过 “深度” 键对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)
  ])), 
])

知道如何获得它吗?


阅读 218

收藏
2020-12-20

共1个答案

小编典典

由于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()

2020-12-20