python - 对字典的字典进行排序

标签 python sorting dictionary

我有一个字典的字典,看起来像这样:

"abc": {
    "name": "Joey",
    "order": 3
    },
"def": {
    "name": "Allen",
    "order": 2
    },
"ghi": {
    "name": "Tim",
    "order": 1
    }

现在,我想根据“顺序”值对这本字典进行排序。

意思是,排序后的字典看起来像:

"ghi": {
    "name": "Tim",
    "order": 1
    }
"def": {
    "name": "Allen",
    "order": 2
    },
"abc": {
    "name": "Joey",
    "order": 3
    }

我该怎么做? 我找到了对字典列表进行排序的方法,但不是字典的字典。

最佳答案

使用sorted按“顺序”和 collections.OrderedDict 排序存储结果,

import collections

d = {
    "abc": {
        "name": "Joey",
        "order": 3
        },
    "def": {
        "name": "Allen",
        "order": 2
        },
    "ghi": {
        "name": "Tim",
        "order": 1
        }
    }

result = collections.OrderedDict(sorted(d.items(), key=lambda t:t[1]["order"]))

# Output
print(result)
OrderedDict([('ghi', {'name': 'Tim', 'order': 1}), 
            ('def', {'name': 'Allen', 'order': 2}), 
            ('abc', {'name': 'Joey', 'order': 3})])

关于python - 对字典的字典进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42398375/

相关文章:

algorithm - 在 8GB 以上的文本文件中查找 "key"

xml - 使用 XSLT 排序后将 XML 转换为 XML

C++ 如何声明映射变量

Python添加列表作为字典中的键

python - 从字符串中删除空括号 ( )

相当于 R "split"函数的 Python

python - Pandas 根据其他列的条件添加具有值的列

python - 使用 Python PIL 打开图像

java - 什么时候对另一个使用排序

python - 从具有部分索引的字典创建值列表 :values