获取嵌套的python dict键和值并放在列表中

时间:2018-12-15 04:07:59

标签: python python-3.x

我该如何循环此嵌套的python字典并为聚合,S1,S2,S3和S4的所有值构建一个列表。需要注意的是,所有这些不同的键中总会存在一些注意事项,但是在此示例中,其他键S1到S4可以是动态的,我有S1到S4,但是当我从服务器传递此信息时,可能是S1到S10 。同样,这些键中的任何一个(例如v4_acl)都可能看起来像键PNC,其中除聚合外的所有数据都存在。

我的最终结果是拥有

之类的东西
S1List = [10,10,10,10,10]
S2List = [20,20,20,20,20]
S3List = [30,30,30,30,30]
S4List = [40,40,40,40,40]
aggregateList = [100,100,100,100,100]

我的字典

{
    "OuterKey": {
        "v4_acl": {
            "aggregate": 100,
            "S1": 10,
            "S2": 20,
            "S3": 30,
            "S4": 40
        },
        "v6_acl": {
            "aggregate": 100,
            "S1": 10,
            "S2": 20,
            "S3": 30,
            "S4": 40
        },
        "v4_qos": {
            "aggregate": 100,
            "S1": 10,
            "S2": 20,
            "S3": 30,
            "S4": 40
        },
        "v6_nf": {
            "aggregate": 100,
            "S1": 10,
            "S2": 20,
            "S3": 30,
            "S4": 40
        },
        "baseline": {
            "aggregate": 100,
            "S1": 10,
            "S2": 20,
            "S3": 30,
            "S4": 40
        },
        "PNC": {
            "aggregate": 0,
        }
    }
}

1 个答案:

答案 0 :(得分:2)

您可以在setdefaultvalues()循环的同时,使用keys()附加到词典中以对项目进行分组。像这样:

res = {}
for k  in d['OuterKey'].values():
    for g in k:
        res.setdefault(g, []).append(k[g])

最后res将是一个字典,看起来像:

{'aggregate': [100, 100, 100, 100, 100, 0],
 'S1': [10, 10, 10, 10, 10],
 'S2': [20, 20, 20, 20, 20],
 'S3': [30, 30, 30, 30, 30],
 'S4': [40, 40, 40, 40, 40]}