Jaybanuan's Blog

どうせまた調べるハメになることをメモしていくブログ

Pythonでリストからディクショナリを生成する

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()を活用する必要があるようだ。

参考