ordereddict python 3
Cómo ordenar OrderedDict of OrderedDict-Python (3)
Estoy tratando de ordenar OrderedDict en OrderedDict por la tecla ''profundidad'' . ¿Hay alguna solución para ordenar ese diccionario?
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)
])),
])
El dictado ordenado debería verse así:
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)
])),
])
alguna idea de cómo conseguirlo?
A veces es posible que desee conservar el diccionario inicial y no crear uno nuevo.
En ese caso, podrías hacer lo siguiente:
temp = sorted(list(foo.items()), key=lambda x: x[1][''depth''])
foo.clear()
foo.update(temp)
Tendrá que crear uno nuevo ya que OrderedDict
está ordenado por orden de inserción.
En tu caso, el código sería así:
foo = OrderedDict(sorted(foo.iteritems(), key=lambda x: x[1][''depth'']))
Consulte http://docs.python.org/dev/library/collections.html#ordereddict-examples-and-recipes para ver más ejemplos.
Nota para Python 3 necesitará usar .items()
lugar de .iteritems()
.
>>> OrderedDict(sorted(od.items(), key=lambda item: item[1][''depth'']))