2012-09-12 25 views
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}] 

這樣做的簡單方法是什麼?我必須提及,'X'列表之間可能存在未知數量的此類列表{'time': '08:34:51', 'load': 28.27, 'memory': 40}

回答

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) 
+0

謝謝,這是我第一次想接受這麼快的答案,得到「不能在3分鐘」 – theAlse