如何根据嵌套字典中的子字典计算父字典值

2024-05-14 00:04:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python嵌套字典,顺序不固定,并基于子count和size值更新父count和size值。但这两个值在最后一个嵌套的dict中都可用

输入Dict-

[{'name': 'stack', 'children': 
    [{'name': 'flow', 'children': 
        [{'name': 'lldp', 'children':
            [{'name': 'sourc', 'children': 
                [{'name': 'lldque.jrc', 'count': '11', 'size': '37'}]}]}, 
         {'name': 'arp', 'children': 
            [{'name': 'src', 'children': 
                [{'name': 'arpred.cec', 'count': '37', 'size': '67'}]}]}]}]}]

输出Dict应如下-

[{'name':'stack','count':'4','size':'6','children':
    [{'name':'flow','count':'4','size':'6','children':
        [{'name':'lldp','count':'1','size':'2','children':
            [{'name':'sourc','count':'1','size':'2','children':
                [{'name':'lldque.jrc','count':'1','size':'2'}]}]},
         {'name':'arp','count':'3','size':'4','children':
            [{'name':'src','count':'3','size':'4','children':
                [{'name':'arpred.cec','count':'3','size':'4'}]}]}]}]}]

目前我正在使用下面的代码

def populateParentDict(ddict):
    listl = []
    if type(ddict) == list:
        if 'children' in ddict[0]:
            return populateParentDict(ddict[0])
        else:
            listl.append(ddict[0]['Buggy'])
            listl.append(ddict[0]['Clean'])
    elif 'children' in ddict:
        return populateParentDict(ddict['children'])
    return listl

Tags: namesizereturnstackcountflowdictlldp