我有一个字典,取自一个JSON文件,其中所有的值,包括嵌套的值都是顺序的。不管筑巢
Obj = [{
"Text": 1,
"Content": [{"Text": 2},{"Text": 3},{"Text": 4},{"Text": 5}]},
{
"Text": 6,
"Content": [{"Text": 7},{"Text": 8},{"Text": 9},{"Text": 10}]}
]
我需要使{"Text": 3}
成为顶级元素,并将嵌套列表中的以下所有元素移到它下面,如下所示:
Obj = [{
"Text": 1,
"Content": [{"Text": 2}]},
{
"Text": 3,
"Content": [{"Text": 4},{"Text": 5}]},
{
"Text": 6,
"Content": [{"Text": 7},{"Text": 8},{"Text": 9},{"Text": 10}]}
]
假设这个列表很长,有不同数量的顶级元素和嵌套元素我如何有效地做到这一点?
这是我实际代码的一个非常简化的版本,结果大致相同,我要么得到空的“Content”值,要么,使用此代码的其他(更长)变体,元素的顺序完全不同步:
Obj = [{
"Text": 1,
"Content": [{"Text": 2},{"Text": 3},{"Text": 4},{"Text": 5}]},
{
"Text": 6,
"Content": [{"Text": 7},{"Text": 8},{"Text": 9},{"Text": 10}]}
]
print(Obj)
NewObj = []
lineCounter = -1
topLevelKey = -1
ElementToMove = 3
for toplevel in Obj:
topLevelKey += 1
NewObj.append(toplevel)
NewObj[len(NewObj)-1]['Content'] = []
for nested in toplevel['Content']:
lineCounter += 1
print(NewObj)
if nested['text'] == ElementToMove:
NewObj.insert(topLevelKey,nested)
NewObj[topLevelKey]['Content'] = []
else:
NewObj[topLevelKey]['Content'].append(nested)
print(NewObj)
此代码示例的最终结果如下所示:
[{'Text': 1, 'Content': []}, {'Text': 6, 'Content': []}]
我尝试了几种不同的方法来解决这个问题,我知道答案可能非常简单,Python可能有一个函数来处理这样的东西,我就是找不到。我错过了什么
目前没有回答
相关问题 更多 >
编程相关推荐