python嵌套dict从常规json转换为nest



我一直在将jsons从正则(键值(转换为嵌套。例如:

j = { 'a': 5,
'b': 3,
'c.c1': 2,
'c.c2':5,
'd.dd.d1': 0,
'd.dd.d2':9
}

我需要得到:

new_j = { 
'a': 5,
'b': 3,
'c': 
{'c1': 2,
'c2':5}
'd': 
{'dd' :
{'d1': 0,
'd2': 9}
},
}

有什么简单的方法可以做到这一点?

这个怎么样?

j_new = {}
for key,value in j.items():
keys = key.split('.')
level = j_new
for key in keys[:-1]:
if key not in level:
level[key]={}
level = level[key]
level[keys[-1]]=value
print(j_new)

哪个返回:

{'a': 5, 'b': 3, 'c': {'c1': 2, 'c2': 5}, 'd': {'dd': {'d1': 0, 'd2': 9}}}

试试这个:

d = {}
def setValue(dic, keys, value):
for key in keys[:-1]:
dic = dic.setdefault(key, {})
dic[keys[-1]] = value
for k,v in j.items():
setValue(d, k.split('.'), v)

输出:

{
"a": 5,
"c": {
"c2": 5,
"c1": 2
},
"b": 3,
"d": {
"dd": {
"d2": 9,
"d1": 0
}
}
}

最新更新