Как сортировать OrderedDict из OrderedDict-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)
])),
])
Сортированный дикт должен выглядеть так:
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)
])),
])
Есть идеи, как его получить?
3 ответа:
Вам придется создать новый, так как
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()
.