Как отсортировать OrderedDict of OrderDict – Python

Я пытаюсь сортировать OrderedDict в OrderedDict с помощью клавиши «depth» . Есть ли решение для сортировки этого Словаря?

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) ])), ]) 

Сортировка dict должна выглядеть так:

 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) ])), ]) 

любая идея, как ее получить?

2 Solutions collect form web for “Как отсортировать OrderedDict of OrderDict – Python”

Вам нужно будет создать новый, так как OrderedDict будет отсортирован по порядку вставки.

В вашем случае код будет выглядеть так:

 foo = OrderedDict(sorted(foo.iteritems(), key=lambda x: x[1]['depth'])) 

Дополнительную информацию см. На странице http://docs.python.org/dev/library/collections.html#ordereddict-examples-and-recipes .

 >>> OrderedDict(sorted(od.items(), key=lambda item: item[1]['depth'])) 
Python - лучший язык программирования в мире.