我有以下 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
	提交
		取消
	