Pythonでキーとバリューが交互に並んだリストからディクショナリを生成するには、以下のようにする。
x = ['key1', 'value1', 'key2', 'value2'] y = dict(zip(x[0::2], x[1::2]))
まず、ステップ数を指定したスライスを利用して、x[0::2]
でキーのリストを、x[1::2]
でバリューのリストを生成する。
次に、zip()
を利用してタプル(キー, バリュー)
を要素に持つイテレータを生成する。
そして、そのイテレータを引数にしてdict()
を呼び出し、ディクショナリを生成する。
ただし、キーの数とバリューの数が不揃いだった場合、zip()
だと短い方に切り詰められるので、エラーハンドリングをしたいならばitertools.zip_longest()
を活用する必要があるようだ。