我很难弄清楚如何设置一个sort()
函数来处理复杂的数据结构。
这是数据:
{
"GROUP-A": {
"key-A1": {
"GROUP-B": {
"key-B1": {
"GROUP-C": {
"key-C1": 100,
"key-C2": 850,
"key-C3": 50
}
},
"key-B2": {
"GROUP-C": {
"key-C1": 700,
"key-C2": 1100,
"key-C3": 500
}
},
"key-B3": {
"GROUP-C": {
"key-C1": 150,
"key-C2": 300,
"key-C3": 450
}
}
}
},
"key-A2": {
"GROUP-B": {
"key-B1": {
"GROUP-C": {
"key-C1": 0,
"key-C2": 0,
"key-C3": 0
}
},
"key-B2": {
"GROUP-C": {
"key-C1": 50,
"key-C2": 150,
"key-C3": 250
}
},
"key-B3": {
"GROUP-C": {
"key-C1": 150,
"key-C2": 50,
"key-C3": 200
}
}
}
},
"key-A3": {
"GROUP-B": {
"key-B1": {
"GROUP-C": {
"key-C1": 100000,
"key-C2": 0,
"key-C3": 0
}
},
"key-B2": {
"GROUP-C": {
"key-C1": 0,
"key-C2": 0,
"key-C3": 0
}
},
"key-B3": {
"GROUP-C": {
"key-C1": 0,
"key-C2": 0,
"key-C3": 0
}
}
}
}
}
}
还要考虑我有多个key-Ax
字典。
我要返回的是key-A
按 in 中的值排序的类型的 dict 列表,key-C
但不更改该键内的数据结构。
例如,使用上面提供的数据,我希望看到:
[{"key-A3":{..}},{"key-A1":{..}},{"key-A2":{..}}]
这是一个单一sort()
功能可以实现的,还是太复杂了?
可能是这种类型的东西:
filtered = sorted(data["GROUP-A"].items(), key= lambda kv: (??????))
我一直在修补 lambda 函数,但我无法按预期工作。
如果可以的话,请您解释一下所涉及的步骤吗?我会死去理解你如何将问题分解成更小的部分......以及它背后的推理。
谢谢!
编辑:如果您想尝试一下,这里有一个在线 python 编辑器的链接http://repl.it/MDY/1