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 に答える