我正在尝试通过 “深度” 键对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) ])), ])
知道如何获得它吗?
由于OrderedDict按插入顺序排序,因此您必须创建一个新的。
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()。
.items()
.iteritems()