我建议您先将其转换为以下数据结构:
我建议您首先将其转换为类似这样的数据结构:
topo = {
'm0' : {
'm1' : {},
'm2' : {},
'm3' : {},
},
}
也就是说,您已经将“name”键的每个值都作为字典中的一个键,并且“children”键的每个值都成为该键的值,并将它从列表更改为字典。
现在,您不需要预先假设m2所在的索引位置。您确实需要知道m2在m0内部,但然后您可以简单地说:
topo['m0']['m2']['ABC'] = {}
您可以使用以下代码在不同格式之间进行转换:
def verbose_to_compact(verbose):
return { item['name']: verbose_to_compact(item['children']) for item in verbose }
def compact_to_verbose(compact):
return [{'name':key, 'children':compact_to_verbose(value)} for key, value in compact]
按照以下方式进行调用
compact_topo = verbose_to_compact([topo])
verbose_topo = compact_to_verbose(compact_topo)[0]
我假设你现有的格式是某个文件格式的直接解释。你可以按照这种方式读取它,转换它,在紧凑格式下处理它,然后在需要再次写入文件时将其转换回来。