01 / 07
回るのはキーのほう
リストを for に渡すと、中身が順に出てきた。辞書を渡すと出てくるのは——キーのほうだよ。
値ではない。ここは一度は必ずおどろくところなので、「回るのはキー」と声に出して覚えよう。
nedans = {"りんご": 120, "みかん": 80}for kagi in nedans: print(kagi)実行結果
りんご みかん
くり返しとデータの持ち方
INPUT · スライド
01 / 07
リストを for に渡すと、中身が順に出てきた。辞書を渡すと出てくるのは——キーのほうだよ。
値ではない。ここは一度は必ずおどろくところなので、「回るのはキー」と声に出して覚えよう。
nedans = {"りんご": 120, "みかん": 80}for kagi in nedans: print(kagi)実行結果
りんご みかん
02 / 07
キーが手に入れば、値は nedans[kagi] で引ける。この2行で「辞書を全部見る」ができるようになったよ。
並ぶ順番は、書いた順のまま。辞書は入れた順を覚えているので、実行するたびに順番が変わったりしないよ。
nedans = {"りんご": 120, "みかん": 80}for kagi in nedans: print(kagi, nedans[kagi])実行結果
りんご 120 みかん 80
03 / 07
キーだけを集めたものが欲しいときは keys()。
そのまま print すると dict_keys([...]) という見なれない形で出てくる。これは「キーの一覧」を表す専用の見た目で、for で回せばリストと同じように使えるよ。
for kagi in nedans: と for kagi in nedans.keys(): は同じ結果。短いほうがよく使われるけれど、keys() と書いてあると「キーを回すつもりだ」とはっきり伝わるね。
nedans = {"りんご": 120, "みかん": 80}print(nedans.keys())for kagi in nedans.keys(): print(kagi)実行結果
dict_keys(['りんご', 'みかん']) りんご みかん
04 / 07
値だけが欲しいときは values()。キーに用が無いとき——合計を出すときなどに使うよ。
こちらも print すると dict_values([...]) と出てくる。中身は書いた順のままだよ。
nedans = {"りんご": 120, "みかん": 80}print(nedans.values())goukei = 0for atai in nedans.values(): goukei += ataiprint(goukei)実行結果
dict_values([120, 80]) 200
05 / 07
キーと値の両方が欲しいときは items()。
そのまま print すると ('りんご', 120) のようなカッコの組が並んで出てくる。この「2つをまとめた組」の正体は、このグループの最後のレッスンで扱うタプルだよ。いまはキーと値がペアで並んでいると見ておけばいい。
nedans = {"りんご": 120, "みかん": 80}print(nedans.items())実行結果
dict_items([('りんご', 120), ('みかん', 80)])06 / 07
items() の本当の使いどころはここ。for が受け取る名前をカンマで2つ書けるんだ。
for kagi, atai in nedans.items(): と書けば、1周ごとに kagi にキー、atai に値が入る。nedans[kagi] と書かずに済むので、こちらのほうがよく使われるよ。
nedans = {"りんご": 120, "みかん": 80}for kagi, atai in nedans.items(): print(kagi, atai)実行結果
りんご 120 みかん 80
07 / 07
辞書を回す書きかたを整理しよう。
for kagi in hito: … キーだけ。いちばん短いfor atai in hito.values(): … 値だけfor kagi, atai in hito.items(): … 両方欲しいものだけを受け取るのがきれいな書きかた。値しか使わないのに、キーを回して引きなおすのは少し遠まわりだよ。
次はいよいよ、辞書とリストを組み合わせる番。ここまでの道具が全部つながるよ。
hito = {"namae": "ゆい", "toshi": 15}for kagi, atai in hito.items(): print(f"{kagi}は{atai}")実行結果
namaeはゆい toshiは15