我正在尝试深度合并列表以获得特定的json
我想要实现的是这种格式(元素的顺序是I相关的):
{
"report": {
"context": [{
"report_id": [
"Report ID 30"
],
"status": [
"Status 7"
],
"fallzahl": [
"Fallzahl 52"
],
"izahl": [
"IZahl 20"
]
}
],
"körpergewicht": [{
"any_event_en": [{
"gewicht": [{
"|magnitude": 185.44,
"|unit": "kg"
}
],
"kommentar": [
"Kommentar 94"
],
"bekleidung": [{
"|code": "at0011"
}
]
}
]
}
]
}
} 我尝试将目录和列表进行深度合并,以实现这种特定的格式。我的底线是一些格言:
{'körpergewicht':[{'any_event_en':[{'gewicht':[{'Magnite':'100','unit':'kg'}]}]
{'körpergewicht':[{'any_event_en':[{'bekleidung':[{'code':'at0013'}]}]
{'körpergewicht':[{'any_event_en':[{'kommentar':['none']}]}
{'context':[{'status':['fatty']}]}
{'context':[{'fallzahl':['123']}]}
{'context':[{'report_id':['123']}]}
{'context':[{'izahl':['123']}]}
我试着做的是,我有一个名为tmp_dict的dict,当我循环时,我拿着一个基线dict。所谓的collect_dict就是我试图合并基线dict的dict。元素保存我当前的基线dict
if (index == (len(element)-1)): #when the baseline dict is traversed completely
if tmp_dict:
first_key_of_tmp_dict=list(tmp_dict.keys())[0]
if not (first_key_of_tmp_dict in collect_dict):
collect_dict.update(tmp_dict)
else:
merge(tmp_dict,collect_dict)
else:
collect_dict.update(tmp_dict)
我还写了一个合并方法:
def merge(tmp_dict,collect_dict):
first_common_key_of_dicts=list(tmp_dict.keys())[0]
second_depth_key_of_tmp_dict=list(tmp_dict[first_common_key_of_dicts][0].keys())[0]
second_depth_tmp_dict=tmp_dict[first_common_key_of_dicts][0]
second_depth_key_of_coll_dict=collect_dict[first_common_key_of_dicts][0]
if not second_depth_key_of_tmp_dict in second_depth_key_of_coll_dict:
collect_dict.update(second_depth_tmp_dict)
else:
merge(second_depth_tmp_dict,second_depth_key_of_coll_dict)
我所提出的方向是正确的,但远远没有达到我想要的结果:
{"report": {
"k\u00f6rpergewicht": [{
"any_event_en": [{
"kommentar": ["none"]
}
],
"bekleidung": [{
"|code": "at0013"
}
],
"gewicht": [{
"|magnitude": "100",
"|unit": "kg"
}
]
}
],
"context": [{
"fallzahl": ["234"]
}
],
"report_id": ["234"],
"status": ["s"],
"izahl": ["234"]
}
}
使用另一组输入:
{'atemfrequenz': {'context': [{'status': [{'|code': 'at0012'}]}]}},
{'atemfrequenz': {'context': [{'kategorie': ['Kategorie']}]}},
{'atemfrequenz': {'atemfrequenz': [{'messwert': [{'|magnitude': '123', '|unit': 'min'}]}]}}
我希望实现以下输出:
"atemfrequenz": {
"context": [
{
"status": [
{
"|code": "at0012"
}
],
"kategorie": [
"Kategorie"
]
}
],
"atemfrequenz": [
{
"messwert": [
{
"|magnitude": 123,
"|unit": "/min"
}
]
}
]
}
这段代码应该得到正确的答案。为了防止错误,我删除了特殊字符(ö)
输出(格式化)
关于提供的第二个数据集,需要对数据进行结构化,以匹配前一个数据集
此数据集工作正常:
输出(格式化)
相关问题 更多 >
编程相关推荐