PYTHON はじめの一歩 / LESSON 08

データの形を選ぼう。

同じデータでも、順番を守るのか、重複をなくすのか、名前で探すのかで向いた形が変わります。

学びを始める

タプル・集合・辞書を使い分ける。 | 動画なしでも学べます

データの形を選ぼう。をあおい・はる・AI先生・ROBORONと考えるイラスト
タプル・集合・辞書を使い分ける。
GOAL

この回でできるようになること

  • 01タプルとリストの違いを説明する
  • 02集合で重複を取り除く
  • 03辞書のキーから対応する値を取り出す
ことばの窓
01 / EXPLORE

組をそのまま保つタプル

タプルは ( ) で作ります。位置番号で読み取れますが、作った後に要素を直接入れ替えることはできません。

あおい

ROBORONの位置を (横, 縦) の組で持ちたいな。

AI先生

いいね。座標のように『ひと組』として扱うと、意味が分かりやすいんだよ。

はる

一時的に変えない組ならタプルが合いますね。

実際のコードまず結果を予想してみよう
position = (4, 2)
print(position[0])
print(position[1])
実行すると4 / 2

なぜ? 0番目は横の4、1番目は縦の2。position[0] = 5 のような変更はできません。

目で見てわかる組をそのまま保つタプル
図8-1 座標の横と縦をひと組にします。
図8-1 座標の横と縦をひと組にします。
ROBORONのチェック!

『変更できない』のはタプルの要素の入れ替え。中にリストが入る場合、その内側まで変化しないわけではないよ。

02 / EXPLORE

重複をまとめる集合

set() は同じ値を1つにまとめます。集合には位置番号がなく、表示順も頼りにしません。

あおい

リンゴが2回記録されたら、種類の数だけ知りたいな。

AI先生

集合なら重複をなくして考えられるよ。どの順番で表示されるかは決めつけないでね。

はる

順番が必要なデータにはリストを残します。

実際のコードまず結果を予想してみよう
fruit = ["リンゴ", "バナナ", "リンゴ"]
unique = set(fruit)
print(len(unique))
print("リンゴ" in unique)
実行すると2 / True

なぜ? リンゴが2回あっても集合では1種類。要素数は2です。集合そのものの表示順には依存しません。

目で見てわかる重複をまとめる集合
図8-2 回数の情報を捨てて、種類を取り出します。
図8-2 回数の情報を捨てて、種類を取り出します。
ROBORONのチェック!

元の記録は消さず、必要に応じて別の集合を作ると安全だよ。

03 / EXPLORE

名前で探せる辞書

辞書は キー: 値 の組です。位置ではなくキーを指定して値を取り出します。

あおい

『リンゴの値段』をすぐ調べたい! 何番に書いたかは覚えられないよ。

AI先生

それなら辞書なんだ。price['リンゴ'] という名前で探せるよ。

はる

存在しないキーを調べるときは get() を使えば、代わりの値も決められます。

実際のコードまず結果を予想してみよう
price = {"リンゴ": 120, "バナナ": 90}
print(price["リンゴ"])
print(price.get("みかん", "未登録"))
price["リンゴ"] = 130
print(price["リンゴ"])
実行すると120 / 未登録 / 130

なぜ? キー『リンゴ』に対応する値を読む。get() はないキーでも指定した代替値を返します。最後は値を130へ更新。

目で見てわかる名前で探せる辞書
図8-3 辞書は『名前→値』で探します。
図8-3 辞書は『名前→値』で探します。
ROBORONのチェック!

辞書のキーは重複できません。同じキーに新しい値を入れると前の値を更新します。

04 / YOUR TURN

予想して、理由まで確かめよう

答えを選んだら、説明を読んでから実行欄でも試してみよう。

チャレンジどれになるかな?

price = {"リンゴ": 120} のとき price.get("バナナ", 0) は?

答えを選ぶと理由が表示されます。

PUT IT TOGETHER

小さな練習:辞書の中身を全部見よう

{'リンゴ':120, 'バナナ':90} のキーと値を、for と items() で1組ずつ表示しよう。

ヒント:for name, price in prices.items(): の形です。

解き方の一例と理由を見る
prices = {"リンゴ": 120, "バナナ": 90}
for name, price in prices.items():
    print(name, price)

items() からキーと値の組を受け取り、それぞれ name、price に入れます。

COFFEE BREAK

どのデータ構造がよい?

あおい

リスト、タプル、集合、辞書。道具箱がいっぱいだね!

AI先生

選ぶ目安は『何をしたいか』なんだよ。順番ならリスト、固定した組ならタプル、種類だけなら集合、名前から探すなら辞書。

はる

最初に目的を一文で書いてから選ぶと、迷いにくそうです。

05 / RUN PYTHON

自分の手で動かそう

例題を選び、結果を予想してから「実行する」を押そう。値を変えると、どの行が結果を決めるか見えてくるよ。

例題を選ぶ

書き換えて試せます。Tabキーは半角スペース4つ分です。

位置番号は0からです。

この入力欄の使い方

コード内の input() に渡す値を1行ずつ書きます。input() がない例では空欄で大丈夫です。複数回呼ぶコードでは上から順に使います。

準備できました。

実行結果

実行すると、ここに結果を表示します。

Pythonは閲覧中の端末内で動作します。

AI先生からひとこと

タプル・集合・辞書を使い分ける。 今日覚えた道具を、別の値でも試してみよう。自分で理由を説明できたら、とてもいい進歩なんだよ。