连接词典列表

时间:2012-09-12 08:21:27

标签: python dictionary python-2.7

我有这样的词典列表:

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

1 个答案:

答案 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)