01 / 07
1人ぶんは辞書で書けた
辞書があれば、1人ぶんのデータはきれいに書ける。名前と点数がひとまとまりになっているね。
でも名簿は1人では終わらない。何人ぶんも持ちたいとき、どうすればいいだろう。
hito = {"namae": "ゆい", "ten": 80}print(hito["namae"], hito["ten"])実行結果
ゆい 80
くり返しとデータの持ち方
INPUT · スライド
01 / 07
辞書があれば、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
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 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
名簿はリストなので、リストの道具がそのまま使える。append で1件足せるよ。渡すのは辞書だね。
つまりこの形は、リストの知識と辞書の知識をそのまま重ねただけ。新しく覚えることはほとんど無いんだ。
次はこのグループの最後、あとから変えられない組であるタプルを見るよ。
hitos = [{"namae": "ゆい", "ten": 80}]hitos.append({"namae": "そう", "ten": 55})for hito in hitos: print(hito["namae"])実行結果
ゆい そう