我该如何循环此嵌套的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,
}
}
}
答案 0 :(得分:2)
您可以在setdefault
和values()
循环的同时,使用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]}