くり返しとデータの持ち方

INPUT · スライド

辞書をリストに並べる

01 / 07

1人ぶんは辞書で書けた

辞書があれば、1人ぶんのデータはきれいに書ける。名前と点数がひとまとまりになっているね。

でも名簿は1人では終わらない。何人ぶんも持ちたいとき、どうすればいいだろう。

hito = {"namae": "ゆい", "ten": 80}print(hito["namae"], hito["ten"])

実行結果

ゆい 80

02 / 07

リストの中に辞書を並べる

答えは、リストの中に辞書を並べること。[ と ] の中に、辞書をカンマで区切って書くよ。

読みかたはこう。「リストが名簿ぜんたい、辞書が1人ぶん」。この一言をおさえれば、あとは今までの道具の組み合わせだけだよ。

hitos = [{"namae": "ゆい", "ten": 80}, {"namae": "そう", "ten": 55}]print(hitos[0])

実行結果

{'namae': 'ゆい', 'ten': 80}

03 / 07

2段階で取り出す

hitos[0] は辞書だった。辞書ならキーで引けるので、続けて ["namae"] と書ける。

hitos[0]["namae"] は左から順に読むよ。

  • hitos[0] … 名簿の1件目(辞書)
  • ["namae"] … その辞書の名前

一度に読もうとすると混乱するので、カッコごとに区切って読むのがコツだよ。

hitos = [{"namae": "ゆい", "ten": 80}, {"namae": "そう", "ten": 55}]print(hitos[0]["namae"])print(hitos[1]["ten"])

実行結果

ゆい
55

04 / 07

for で全員ぶんを回す

ここが本番。for hito in hitos: と書くと、1周ごとに hito へ辞書が1つ入ってくる。

受け取った hito は辞書なので、中では hito["namae"] と書けばいい。何人いても、書くコードは同じ。2人でも1000人でもこの3行だよ。

hitos = [{"namae": "ゆい", "ten": 80}, {"namae": "そう", "ten": 55}]for hito in hitos:    print(hito["namae"], hito["ten"])

実行結果

ゆい 80
そう 55

05 / 07

中で条件分岐する

ループの中では if も使える。1件ずつ見て、判定して、結果を出す——第1章でやったことが全員ぶんに効くようになったんだ。

これが「プログラムが実用的になる」ということ。100件のデータを人が目で見て仕分けるかわりに、同じ判定を機械にやらせているんだよ。

hitos = [{"namae": "ゆい", "ten": 80}, {"namae": "そう", "ten": 55}]for hito in hitos:    if hito["ten"] >= 60:        print(hito["namae"], "ごうかく")    else:        print(hito["namae"], "ふごうかく")

実行結果

ゆい ごうかく
そう ふごうかく

06 / 07

全体をまとめる

合計や平均も同じ形で出せる。先に入れ物を用意して、回しながら足していくだけだよ。

print をループの外に置くのを忘れないでね。中に入れると、途中の数まで全部出てしまうよ。

hitos = [{"namae": "ゆい", "ten": 80}, {"namae": "そう", "ten": 55}, {"namae": "はる", "ten": 90}]goukei = 0for hito in hitos:    goukei += hito["ten"]print(goukei)print(goukei / 3)

実行結果

225
75.0

07 / 07

あとから1件足す

名簿はリストなので、リストの道具がそのまま使える。append で1件足せるよ。渡すのは辞書だね。

つまりこの形は、リストの知識と辞書の知識をそのまま重ねただけ。新しく覚えることはほとんど無いんだ。

次はこのグループの最後、あとから変えられない組であるタプルを見るよ。

hitos = [{"namae": "ゆい", "ten": 80}]hitos.append({"namae": "そう", "ten": 55})for hito in hitos:    print(hito["namae"])

実行結果

ゆい
そう