我有这样的词典列表:
[{'X': '10'},
{'time': '08:34:51', 'load': 28.27, 'memory': 40},
{'time': '08:34:51', 'load': 28.27, 'memory': 40},
{'X': '15'},
{'time': '08:34:51', 'load': 28.27, 'memory': 40},
{'time': '08:34:51', 'load': 28.27, 'memory': 40}]
我需要将'X'-dic连接到其他词典中。我只需要以下词典列表:
[{'X': '10', 'time': '08:34:51', 'load': 28.27, 'memory': 40},
{'X': '10', 'time': '08:34:51', 'load': 28.27, 'memory': 40},
{'X': '15', 'time': '08:34:51', 'load': 28.27, 'memory': 40},
{'X': '15', 'time': '08:34:51', 'load': 28.27, 'memory': 40}]
这样做的简单方法是什么?我必须提一下,'X'列表之间可能存在未知数量的此类列表{'time': '08:34:51', 'load': 28.27, 'memory': 40}
。
答案 0 :(得分:5)
使用.update()
方法将一个字典合并到另一个字典中:
somedict.update(otherdict)
要对您的列表执行此操作,请在循环中检测“source”dicts并将其合并到其他循环中:
source = dict()
for mapping in yourlist:
if 'X' in mapping:
source = mapping
else:
mapping.update(source)
请注意,我从源代码的空dict开始,以防在第一次循环运行时没有遇到带X
键的dict。
上面的循环将原始资源留在列表中。如果您需要删除这些,最好的办法是创建一个包含更新的dicts的新列表:
source = dict()
output = []
for mapping in yourlist:
if 'X' in mapping:
source = mapping
else:
mapping.update(source)
output.append(mapping)