0

我有这样的字典列表:

 [{'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}]

这样做的简单方法是什么?我必须提到,{'time': '08:34:51', 'load': 28.27, 'memory': 40}“X”列表之间可能存在未知数量的此类列表。

4

1 回答 1

5

使用该.update()方法将一个字典合并到另一个:

somedict.update(otherdict)

要对您的列表执行此操作,请在循环中检测“源”字典并将它们合并到其他字典中:

source = dict()
for mapping in yourlist:
    if 'X' in mapping:
        source = mapping
    else:
        mapping.update(source)

X请注意,我从源的空字典开始,以防您在第一次运行循环时没有遇到带有键的字典。

上面的循环将原始来源留在列表中。如果您需要删除这些,最好的办法是使用更新的字典创建一个新列表:

source = dict()
output = []
for mapping in yourlist:
    if 'X' in mapping:
        source = mapping
    else:
        mapping.update(source)
        output.append(mapping)
于 2012-09-12T08:22:17.457 回答