gpt4 book ai didi

python - 如何将包含 '_' 的 JSON 字段拆分为子对象?

转载 作者:行者123 更新时间:2023-12-04 08:43:06 25 4
gpt4 key购买 nike

我有以下 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 json

json_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)

最佳答案

这是将处理 dict 的递归函数并拆分 key :

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'}

关于python - 如何将包含 '_' 的 JSON 字段拆分为子对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64467452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com