首页 > 解决方案 > 在 Python 中对多级 orderdict 进行排序?

问题描述

我有一个 OrderDict 类型的字典,如下所示:

>>> from collections import OrderedDict
>>> d=OrderedDict()
>>> d['a']=(dict({'key1': 40}))
>>> d['a'].update(dict({'key2': 10}))
>>> d
OrderedDict([('a', {'key1': 40, 'key2': 10})])
>>> d.values()
odict_values([{'key1': 40, 'key2': 10}])

现在,我正在尝试按字典的值(即 10 和 40)对创建的 orderDict 进行排序,但似乎它一直按键排序。这是我正在做的事情:

>>> sorted(list(d.values())[0], key=lambda x: x[1])
['key1', 'key2']

我希望得到这个:

{'a': {'key2': 10, 'key1': 40}}

标签: pythondictionary

解决方案


为了按值对字典进行排序,d.get请用作排序键:

{k: d[k] for k in sorted(d, key=d.get)}

推荐阅读