python - 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"]
})
解决方案
'level'
您可以使用列表推导,包含除值为as的字典之外的所有字典None
,并将 index 中的值添加2
到0
:
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}
]