排序深度字典 [Python]

Sorting deep dictionary [Python]

我有一个程序,每个项目为 5 个不同的环境获取 3 个键和值,并从中生成一个 JSON 文件。它看起来像这样(简化)。

注意:project的个数可以改变,在不同的环境中不能重名,最后有tag。

注意 2:项目名称不是“project1”“project2”,它们遵循特定的命名方案,使其独一无二。

{
    "env_preprod": {
        "project1": {
            "consumption last month": 127.283851, 
            "quotas": 200, 
            "consumption ": 117.657964
        }, 
        "project2": {
            "consumption last month": 0.000891, 
            "quotas": 200, 
            "consumption ": 0.00018
        }
    }
    "env_prod": {
        "project1": {
            "consumption last month": 127.283851, 
            "quotas": 200, 
            "consumption ": 117.657964
        }, 
        "project2": {
            "consumption last month": 0.000891, 
            "quotas": 200, 
            "consumption ": 0.00018
        }
    }
}

我想按消耗对 5 个不同行为中的项目进行排序,但无法完成。 我尝试这样使用 lambda 函数:

sort = dict(sorted(data.items(), key = lambda x: x[1]['consumption']))

我也试过了,但我没有对值进行排序:

res = {key : dict(sorted(val.items(), key = lambda ele: ele[1]))
       for key, val in data.items()}

我认为目前只有一个循环可以做到这一点,但现在无法正确解决。我只需要通过提升消耗值来对 envs 中的项目进行排序。有什么建议吗?谢谢

如果您使用 Python2 试试这个:

{
    key: OrderedDict(
        sorted(value.items(), key=lambda x: x[1]['consumption '])
    ) 
    for key, value in data.items()
}

在 python3 上你不需要 OrderedDict 因为所有的字典都在 python 上保持顺序 3