首页 > 解决方案 > python - 如何将字典与一个键合并到python中的另一个键字典?

问题描述

我想转换这个列表

level_data = [
    {'level': 0,'connected': 2, , 'total_nodes':5},
    {'level': 1,'connected': 5, , 'total_nodes':2},
    {'level': None,'connected': 1, , 'total_nodes':1},
    ]

将此列表作为输出:这意味着我要删除 level:None dict 并添加到 level:0 dict

level_data = [
    {'level': 0,'connected': 3, , 'total_nodes':6},   #this will be added with contents of level None dictionary 
    {'level': 1,'connected': 5, , 'total_nodes':2},
    ]

问题:如果 level_data 有 level:None dict 添加到 level:0 字典假设 level_data 可能有或没有 level:0 我尝试了这种 brute_force 方法:

for x in level_data:
    if x["level"] == None:
        for y in level_data:
           if y["level"] == 0:
               y["total_nodes"] += x["total_nodes"]
               y["connected"] += x["connected"]
           else:
               level_data.append({
                   "level":0,
                   "total_nodes":x["total_nodes"],
                   "connected":x["connected"]
                    })

标签: python

解决方案


'level'您可以使用列表推导,包含除值为as的字典之外的所有字典None,并将 index 中的值添加20

level_data = [
    {'level': 0,'connected': 2, 'total_nodes':5},
    {'level': 1,'connected': 5, 'total_nodes':2},
    {'level': None,'connected': 1, 'total_nodes':1},
    ]
for di in level_data:
    if di['level'] == 0:
        level_data[0].update({'connected':level_data[2]['connected']+level_data[0]['connected'],'total_nodes':level_data[2]['total_nodes']+level_data[0]['total_nodes']})
level_data = [d for d in level_data if d['level'] != None]
print(level_data)

输出:

[
 {'level': 0, 'connected': 3, 'total_nodes': 6}, 
 {'level': 1, 'connected': 5, 'total_nodes': 2}
]

推荐阅读