Как отсортировать 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)
])),
])
любая идея, как ее получить?
Ответы
Ответ 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.
Ответ 2
>>> OrderedDict(sorted(od.items(), key=lambda item: item[1]['depth']))