クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

辞書と集合でキーから探す

このレッスンのあとで: キーを使って、値を引くことができる。

45分のレッスンコマンドなし

レジは一瞬で値段を出す

コンビニのレジで、バーコードを読むとすぐに値段が出ます。お店には3,000種類もの商品があります。

もし商品の一覧を上から一つずつ見ていたら、レジに長い列ができます。

実際は、商品コードから値段を一回で引いています。その仕組みを見ていきます。

このレッスンのゴール

メモ

キーを使って、値を引くことができる。

キーワード

ことばいみれい
辞書キーと値を組にして持つ入れ物です。{"4901001": 150}
キー値を探すための名前や番号です。
値キーに結びついたデータです。
集合同じものを二つ持たない入れ物です。set(visits)
重複同じものが二つ以上あることです。

学生が入力するセルは、このプレビューでは空白です。

辞書はキーで値を引く

辞書は、{キー: 値} の組を並べて書きます。

値を読むときは、prices["4901001"] のようにキーを書きます。インデックスの代わりに、キーを使うイメージです。

in を使うと、そのキーが登録されているかを調べられます。

やってみよう: 商品コードで引く

コード: python
# コンビニのレジです。商品コードから値段(円)を引きます。
prices = {
    "4901001": 150,   # おにぎり 鮭
    "4901002": 130,   # 緑茶 500ml
    "4901003": 498,   # 幕の内弁当
}

code = "4901003"
print("値段:", prices[code], "円")

# 新しい商品を登録します。キーに値を入れるだけです。
prices["4901004"] = 220
# 値上げ: 同じキーに入れると、値が上書きされます。
prices["4901002"] = 140

if "4901009" in prices:
    print("登録あり")
else:
    print("未登録の商品です")

# "4901001" の値段を160円に変えて、もう一度表示しましょう。

よくある間違い

注意

「同じキーで二回登録すると、値が二つ保存される」と考える人がいます。辞書では、一つのキーに値は一つだけです。二回目に入れた値が、前の値を上書きします。

なぜ辞書は速いのか

リストで探すときは、先頭から一つずつ比べます。商品が多いほど時間がかかります。

辞書は、キーから保存場所を計算します。だから、商品が3,000個でも30万個でも、ほぼ一回で見つかります。

たくさんのデータから一つを探す仕事では、辞書がよく使われます。

例: 一つの商品を探す手間

商品の数リストで探す(最大)辞書で探す
1010回比べるほぼ1回
3,0003,000回比べるほぼ1回
300,000300,000回比べるほぼ1回

学生が入力するセルは、このプレビューでは空白です。

集合は重複を持たない

集合は、同じものを一つしか持ちません。リストを set() に入れると、重複が消えます。

集合も辞書と同じく、in で調べるのが速いです。

「何人来たか」「この番号は登録済みか」を知りたいときに便利です。

やってみよう: 来店した会員

コード: python
# 今日、店に来たポイント会員の番号です。同じ人が何回か来ています。
visits = ["M-102", "M-305", "M-102", "M-777", "M-305", "M-102"]

members = set(visits)        # 集合にすると、重複が消えます
print("来店の回数:", len(visits))
print("来店した人数:", len(members))

# in で、ある会員が来たかどうかをすぐに調べられます。
print("M-777 は来た:", "M-777" in members)

# visits に "M-500" を足して、人数が変わるか確かめましょう。

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。