排序深度字典 [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
我有一个程序,每个项目为 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