複数の辞書の同じキーの値を優雅にリストにまとめる方法

2247 ワード

d = [
    {"time": "09:00", "dt":{"key1": "a", "key2": "d", "key3": "g"}},
    {"time": "10:00", "dt":{"key1": "b", "key2": "e", "key3": "h"}}, 
    {"time":"11:00", "dt":{"key1": "c", "key2":"f", "key3":"i"}}
]

すべての辞書の「time」、「kye 1」、「key 2」、「key 3」を取り出してリストを構成するにはどうすればいいですか?一般的には、空のリストを初期化し、すべての辞書を巡り、対応する値を取得して入力します.このような方法は簡単で乱暴で、今は優雅な方法を紹介します.派手かもしれませんが.
>>> time, key1, key2, key3 = zip(*map(lambda x: (x['time'], x['dt']['key1'], x['dt']['key2'], x['dt']['key3']), d))
>>> time
('09:00', '10:00', '11:00')
>>> key1
('a', 'b', 'c')
>>> key2
('d', 'e', 'f')
>>> key3
('g', 'h', 'i')