考虑以下字典:
{
"a": {
"b1": {
"c": {
"value": "c_value",
"children": {
"d": "d_value"
}
}
},
"b2": [
"b2_1",
{
"b2_2_1": 2,
"b2_2_2": {
"b2_2_2_1": "b2_2_2_1_value",
"b2_2_2_2": "b2_2_2_2_value"
}
},
3
]
}
}
如何反转比如结果是这样的:
{
"d": {
"children": {
"c": {
"b2": [
3,
{
"b2_2_2": {
"b2_2_2_2": "b2_2_2_2_value",
"b2_2_2_1": "b2_2_2_1_value"
},
"b2_2_1": 2
},
"b2_1"
],
"b1": {
"a": "d_value"
}
}
},
"value": "c_value"
}
}
我正在努力解决这个问题的递归方法,而不需要创建一个全局变量来处理结果。
您要求对原始词典进行非常具体的转换。这意味着您需要针对这种情况定义自定义转换。以下是您应该如何执行此操作,但请注意,您想要进行的任何新更改都需要采用新的方法。这个解决方案教你应该如何推理:
import json
def custom_transform(d):
transformed = {
"d": {
"children": {
"c": {
"b2": [
d["a"]["b2"][2],
{
"b2_2_2": {
"b2_2_2_2": d["a"]["b2"][1]["b2_2_2"]["b2_2_2_2"],
"b2_2_2_1": d["a"]["b2"][1]["b2_2_2"]["b2_2_2_1"]
},
"b2_2_1": d["a"]["b2"][1]["b2_2_1"]
},
d["a"]["b2"][0]
],
"b1": {
"a": d["a"]["b1"]["c"]["children"]["d"]
}
}
},
"value": d["a"]["b1"]["c"]["value"]
}
}
return transformed
original_dict = {
"a": {
"b1": {
"c": {
"value": "c_value",
"children": {
"d": "d_value"
}
}
},
"b2": [
"b2_1",
{
"b2_2_1": 2,
"b2_2_2": {
"b2_2_2_1": "b2_2_2_1_value",
"b2_2_2_2": "b2_2_2_2_value"
}
},
3
]
}
}
transformed_dict = custom_transform(original_dict)
print(json.dumps(transformed_dict, indent=4))
这将为您提供预期的输出:
{
"d": {
"children": {
"c": {
"b2": [
3,
{
"b2_2_2": {
"b2_2_2_2": "b2_2_2_2_value",
"b2_2_2_1": "b2_2_2_1_value"
},
"b2_2_1": 2
},
"b2_1"
],
"b1": {
"a": "d_value"
}
}
},
"value": "c_value"
}
}