Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

リスト内包表記なる魔界記法 その2:辞書型

shuzo-kino.hateblo.jp
の続きです。
リスト内方表記で辞書型のデータを作る事もできます。
とはいえ、for節特有の癖から意図しない挙動をする可能性も。

実際のところ

キーと値を通常の辞書型と同様の並びで実装できます。

{x:y+3 for x in "foobar" for y in range(0,6,1)}
#>> {'r': 8, 'b': 8, 'o': 8, 'f': 8, 'a': 8}

とはいえ……後置のforの要素は末尾しか返さないという、致命的な挙動があったりします。
キーをリスト型から生成したい場合なんかには向きませんね……。

{x:y for y in "foobar" for x in range(0,6)}
#>> {0: 'r', 1: 'r', 2: 'r', 3: 'r', 4: 'r', 5: 'r'}

{y:x for x in "foobar" for y in "foobar"}
#>> {'r': 'r', 'b': 'r', 'o': 'r', 'f': 'r', 'a': 'r'}

参考

単純にメソッドを実行したり、変化するクラス変数を放り込んだりする時にもスマートに記述できる。
shuzo-kino.hateblo.jp