01 / 07
値を書きかえる
取り出すときと同じ形を = の左に書くと、その値を書きかえられる。
変数に値を入れるのと同じ感覚だね。hito["toshi"] という置き場所に、新しい値を入れなおしているんだ。
hito = {"namae": "ゆい", "toshi": 15}hito["toshi"] = 16print(hito)実行結果
{'namae': 'ゆい', 'toshi': 16}くり返しとデータの持ち方
INPUT · スライド
01 / 07
取り出すときと同じ形を = の左に書くと、その値を書きかえられる。
変数に値を入れるのと同じ感覚だね。hito["toshi"] という置き場所に、新しい値を入れなおしているんだ。
hito = {"namae": "ゆい", "toshi": 15}hito["toshi"] = 16print(hito)実行結果
{'namae': 'ゆい', 'toshi': 16}02 / 07
おどろくことに、追加もまったく同じ形で書く。
書き分けが要らないのは楽だけれど、キーを打ちまちがえると、こっそり別の項目が増えるという落とし穴でもあるよ。
hito = {"namae": "ゆい"}hito["shumi"] = "どくしょ"print(hito)実行結果
{'namae': 'ゆい', 'shumi': 'どくしょ'}03 / 07
追加ができるので、{} から始めて1つずつ足していける。
足した順に並ぶので、あとから見たときに読みやすい順で入れておくといいよ。
mise = {}mise["namae"] = "パンや"mise["nedan"] = 150print(mise)実行結果
{'namae': 'パンや', 'nedan': 150}04 / 07
いらなくなったキーは del(デル)で消せる。del hito["toshi"] と書くよ。
消したあとにそのキーを引けば、もちろん KeyError。無いキーを del しようとしても KeyError になるので、消す前に「あるかどうか」を確かめたくなるね。
hito = {"namae": "ゆい", "toshi": 15}del hito["toshi"]print(hito)実行結果
{'namae': 'ゆい'}05 / 07
KeyError を避けるいちばん素直な方法が、引く前に確かめること。in を使うよ。
辞書に in を使ったとき、見ているのはキーのほう。値は探してくれないので気をつけてね。
hito = {"namae": "ゆい"}print("namae" in hito)print("shumi" in hito)実行結果
True False
06 / 07
もうひとつの方法が get。hito.get("shumi", "みてい") と書くと、キーが無いときに 2つ目に渡した値を返してくれる。
2つ目を省くと None が返る。どちらにしてもエラーで止まらないのが get のいいところだよ。
hito = {"namae": "ゆい"}print(hito.get("shumi", "みてい"))print(hito.get("namae", "みてい"))print(hito.get("shumi"))実行結果
みてい ゆい None
07 / 07
2つの道具は、やりたいことで選ぶといい。
if "shumi" in hito: … あるときだけ何かをするhito.get("shumi", "みてい") … 無ければこれで代用するどちらも KeyError を防ぐための道具。hito["shumi"] といきなり書くのは、そのキーが必ずあると確信できるときだけにしよう。
次は、辞書の中身を1つずつ取り出して回してみるよ。
hito = {"namae": "ゆい"}if "shumi" in hito: print(hito["shumi"])else: print("しゅみはみとうろく")実行結果
しゅみはみとうろく