01 / 06
囲む記号を変える
ここまでは角かっこ [ ] で囲んできた。だからリストができていたんだ。
中かっこ { } に変えて、先頭を キー: 値 の形にすると、できるのは辞書になるよ。
namaes = ["ゆい", "はると"]print({n: len(n) for n in namaes})実行結果
{'ゆい': 2, 'はると': 3}内包表記
INPUT · スライド
01 / 06
ここまでは角かっこ [ ] で囲んできた。だからリストができていたんだ。
中かっこ { } に変えて、先頭を キー: 値 の形にすると、できるのは辞書になるよ。
namaes = ["ゆい", "はると"]print({n: len(n) for n in namaes})実行結果
{'ゆい': 2, 'はると': 3}02 / 06
違いは2か所だけ。囲む記号と、先頭にコロンがあるかどうかだよ。
[ 値 for 名前 in 回すもの ]{ キー: 値 for 名前 in 回すもの }うしろの for の部分はまったく同じ。if を足せるところも同じだよ。骨格は共通で、囲む記号が入れ物を決めるんだ。
namaes = ["ゆい", "はると"]print([len(n) for n in namaes])print({n: len(n) for n in namaes})実行結果
[2, 3]
{'ゆい': 2, 'はると': 3}03 / 06
辞書は入れた順番を覚えている。第2章でやったとおりだね。
だから辞書内包表記の結果も、回した順にそのまま並ぶ。安心してそのまま表示していいよ。
print({x: x * x for x in range(1, 5)})実行結果
{1: 1, 2: 4, 3: 9, 4: 16}04 / 06
回すものが辞書のときは、items() と組み合わせるのが定番だよ。キーと値を1組ずつ取り出せる、あの書きかただね。
for k, v in nedans.items() と書けば、k にキー、v に値が入る。あとは先頭で好きな形に組み立てればいい。
nedans = {"りんご": 100, "みかん": 80}print({k: v * 2 for k, v in nedans.items()})実行結果
{'りんご': 200, 'みかん': 160}05 / 06
items() と組み合わせると、キーと値をひっくり返した辞書も1行で作れる。先頭を v: k と書くだけだよ。
「名前から値を引く」表を「値から名前を引く」表に作り変える、ということ。これは for で書くとそこそこ長くなるので、内包表記のありがたみが分かりやすい例だよ。
iros = {"りんご": "あか", "みかん": "だいだい"}print({v: k for k, v in iros.items()})実行結果
{'あか': 'りんご', 'だいだい': 'みかん'}06 / 06
うしろに if を足せるのもリストと同じ。条件に合う組だけを残した辞書が作れるよ。
「合格者だけの名簿を作る」のような処理が1行で書ける。次のレッスンでは、同じ中かっこでコロンを外すとどうなるかを見てみよう。
tens = {"ゆい": 80, "はると": 45, "みなと": 60}print({k: v for k, v in tens.items() if v >= 60})実行結果
{'ゆい': 80, 'みなと': 60}