我有以下 JSON 对象,我需要在其中后处理一些标签:{ 'id': '123', 'type': 'A', 'fields': { 'device_safety': { 'cost': 0.237, 'total': 22 }, 'device_unit_replacement': { 'cost': 0.262, 'total': 7 }, 'software_generalinfo': { 'cost': 3.6, 'total': 10 } }}我需要分割标签名称以_获得以下层次结构:{ 'id': '123', 'type': 'A', 'fields': { 'device': { 'safety': { 'cost': 0.237, 'total': 22 }, 'unit': { 'replacement': { 'cost': 0.262, 'total': 7 } } }, 'software': { 'generalinfo': { 'cost': 3.6, 'total': 10 } } }}这是我当前的版本,但我陷入困境,不知道如何处理字段的层次结构:import jsonjson_object = json.load(raw_json)newjson = {}for x, y in json_object['fields'].items(): hierarchy = y.split("_") if len(hierarchy) > 1: for k in hierarchy: newjson[k] = ????newjson = json.dumps(newjson, indent = 4)
1 回答
白板的微信
TA贡献1883条经验 获得超3个赞
这是处理 adict并拆分键的递归函数:
def splitkeys(dct):
if not isinstance(dct, dict):
return dct
new_dct = {}
for k, v in dct.items():
bits = k.split('_')
d = new_dct
for bit in bits[:-1]:
d = d.setdefault(bit, {})
d[bits[-1]] = splitkeys(v)
return new_dct
>>> splitkeys(json_object)
{'fields': {'device': {'safety': {'cost': 0.237, 'total': 22},
'unit': {'replacement': {'cost': 0.262, 'total': 7}}},
'software': {'generalinfo': {'cost': 3.6, 'total': 10}}},
'id': '123',
'type': 'A'}
添加回答
举报
0/150
提交
取消