辞書の基本
[1] が金額なのかカテゴリなのか分からない
支出 1 件は、品名と金額とカテゴリの 3 つでできています。これをリストで持つと ["りんご", 120, "食費"] になりますが、あとから読んだときに [1] が何を指すのか分かりません。番号は意味を運んでくれないからです。
値に 名前 を付けてしまえば解決します。それが 辞書 です。
Python
record = {"name": "りんご", "price": 120, "category": "食費"}
print(record["name"])
print(record["price"])りんご と 120 が出ます。波かっこ {} で囲み、キー: 値 の組をカンマで並べます。左を キー、右を 値 と呼びます。
取り出すときは record["price"] のように角かっこにキーを書きます。番号を覚える必要がなく、読んだ瞬間に何の値か分かります。キーは文字列にするのが基本で、クオートで囲みます。値の型は自由で、上の例では金額だけが int です。
あとから 1 項目だけ足したい
最初から全部そろっているとは限りません。辞書は作ったあとでも項目を足せます。
Python
memo = {}
memo["title"] = "買い物メモ"
memo["done"] = False
memo["done"] = True無いキーに代入すると 追加、すでにあるキーに代入すると 上書き です。同じ書き方で両方が起きます。最後の行で done は True になり、False は残りません。辞書は同じキーを 2 つ持てないからです。エラーにはならず静かに上書きされるので、気づきにくい落とし穴です。
値のところには変数もそのまま書けます。
Python
title = "ノート"
memo = {"title": title}左の "title" はクオート付きの名札、右の title は変数です。同じつづりでも役割が違うので、慣れるまでは見比べて確認します。
空の辞書は {} と書きます。空のリスト [] と見た目が近いので、取り違えないようにします。
やってみよう
関数 make_record(name, price, category) を実装してください。3 つの引数から {"name": 品名, "price": 金額, "category": カテゴリ} という辞書を作って return します。
条件が 1 つあります。category が空文字 "" のときは、代わりに "その他" を入れてください。未入力を既定値で埋める、第 4 章と同じ考え方を辞書の中でやる形です。キーの並びは name、price、category の順にします。
要件
- 関数名は make_record で、引数は name と price と category の3つ
- キーは name と price と category の3つを持つ辞書を return する
- category が空文字のときは値を "その他" にする
- キーの並びは name、price、category の順にする