pythonの辞書とは
辞書はミュータブル(変更可能)なマッピング型の組み込み系オブジェクトです。
辞書はkeyとvalueがセットになっているリストのようなオブジェクトで、keyの指定により値を取り出したり、値の変更ができます。
前提知識として、keyは重複できませんが値は重複ができます。
リストやタプルと違い、辞書は順番は重要ではありません。
使用しているpythonのバージョン次第で、出力した順番が違うこともありますが、仕様ですので気にしなくて大丈夫です。
辞書を作成する
辞書の書き方を解説します。
キーと値は「:」で結びます。キーと値のペア事に「,」で区切って辞書を作成します。
辞書から要素を取得する
辞書から要素を取得するには、keyを指定します。
まず、簡単なコードを見てみましょう。
dict = {"apple":"りんご","banana":"バナナ","grape":"ぶどう"} print(dict["apple"])
上のコードではkeyとして「apple」を指定してあげると、ペアとなっている値の「りんご」が出力されました。
辞書の値の追加と変更と削除
辞書はタプルと違ってミュータブルですので、要素の書き換えが行えます。
値の追加
辞書に値を追加する方法を解説します。書き方は
となります。コードを見てみましょう
dict = {"apple":"りんご","banana":"バナナ","grape":"ぶどう"} dict["orange"] = "オレンジ" print(dict)
オレンジの値が追加されています。
値の変更
値を変更する方法を解説します。
先ほどは新しいkeyをkeyとして追加しましたが、辞書ではkeyの重複はできません。
既存のkeyを指定すると、値の変更ができます
dict = {"apple":"りんご","banana":"バナナ","grape":"ぶどう"} dict["grape"] = "グレープ" print(dict)
値がぶどうからグレープに変更されています。
del構文を使用して値の削除
リストと同じようにdel構文を利用して削除を行うことができます
復習としてリストでdel構文を利用して要素を削除する方法を見てみましょう。
list = ["りんご","みかん","バナナ"] del list[1] print(list)
リストではインデックスを指定して削除を行いました。
辞書ではkeyを指定する事で値の削除が行えます。
dict = {"apple":"りんご","banana":"バナナ","grape":"ぶどう"} del dict["grape"] print(dict)
上記のコードではkey(grape)を指定する事でぶどうの値が削除されました。
popメソッドを使用して削除する
popメソッドを利用して削除する事もできます。
おさらいですが、popメソッドは削除した要素を戻り値として返しますので、変数等に入れておくこともできます。この場合値が変数に保存されます。
書き方
まずは、popを使用して要素を削除するコードを見てみましょう。
dict = {"apple":"りんご","banana":"バナナ","grape":"ぶどう"} dict.pop("banana") print(dict)
bananaのkeyが指定されていますので、バナナの値が削除されています。
次にpopの値を変数に入れたコードを見てみましょう。
dict = {"apple":"りんご","banana":"バナナ","grape":"ぶどう"} h = dict.pop("banana") print(dict) print(h)
バナナ
変数hがバナナとなっています。
辞書を繰り返し取得する
辞書を繰り返し取得する方法を解説します。
for文との組み合わせを解説しますが、本当は応用編で解説しようとしていた内容です。
入門としては難易度は少し高くなっていますが、pythonの辞書の理解が深まると思いますので入門編でも解説を行います。
辞書のkeyを繰り返し取得する
for文の基本的な書き方で辞書を利用するとkeyが取得されます。
dict = {"apple":"りんご","banana":"バナナ","grape":"ぶどう"} for i in dict: print(i)
banana
grape
変数dictを繰り返し出力するとkeyが出力されているのがわかります。
辞書の値を繰り返し取得する
値を繰り返し出力するには出力にkeyを指定してあげることで可能です。
dict = {"apple":"りんご","banana":"バナナ","grape":"ぶどう"} for i in dict: print(dict[i])
バナナ
ぶどう
keyと値をまとめて繰り返し取得する
itemsメソッドを使用する事でkeyと値をまとめて取得する事ができます。
まずはitemsメソッドを使用して辞書を出力してみます。
dict = {"apple":"りんご","banana":"バナナ","grape":"ぶどう"} print(dict.items())
dict_items型として、keyと値がセットになって出力されています。
それではfor文を利用して繰り返し出力します。
dict = {"apple":"りんご","banana":"バナナ","grape":"ぶどう"} for (i,j) in dict.items(): print(i,j)
banana バナナ
grape ぶどう
keyと値が同時に出力されました。
辞書とfor文の組み合わせはよく使いますのでしっかりと理解しておきましょう。
python入門辞書まとめ
python入門辞書編はここまでです。
応用編にて、リストへの変換やソートの方法、要素数を数えてfor文と組み合わせて入力されたデータを画像に変換する方法等を解説いたします。
入門で書いてあることはすべて応用編の前提知識となりますので、しっかりと理解をしておきましょう。
最後に入門編の辞書問題を解いてみましょう。
python入門 辞書問題
辞書の基礎問題です。コードの結果を予測しましょう。
エラー箇所を調べる問題はありません。
問3は入門編では解説しない要素がでてきます。
応用編で詳しく解説しますので、今はざっくりとこんな書き方もあるんだと覚えておいてください。イメージだけで予測は可能です。
問4、問5は応用問題となっています。
問1:結果を予測してください
dict = {"りんご":"apple","バナナ":"banana","ぶどう":"grape"} print(dict["りんご"] + ".jpg")
- 答えを見る
- apple.jpg
keyを指定して値を取り出し、jpgの拡張子を付けています。
このようにして、HTML等と組み合わせると、指定したkeyの画像のimgタグ等が作成できます。
問2:結果を予測してください
dict = {"りんご":"apple","バナナ":"banana","ぶどう":"grape"} dict["オレンジ"] = "orange" del dict["りんご"] dict.pop("バナナ") print(dict)
- 答えを見る
- {‘ぶどう’: ‘grape’, ‘オレンジ’: ‘orange’}
オレンジが追加されて、りんごとバナナが削除されています。
問3:結果を予測してください(未解説要素あり)
dict = {"りんご":"apple","バナナ":"banana","ぶどう":"grape"} if "オレンジ" not in dict.keys(): dict["オレンジ"] = "orange" print(dict)
- 答えを見る
- {‘りんご’: ‘apple’, ‘バナナ’: ‘banana’, ‘ぶどう’: ‘grape’, ‘オレンジ’: ‘orange’}
辞書のkeyにオレンジがない場合にオレンジを追加すると書かれています。
このようなコードは集計に使われますので、イメージをつかんでおきましょう
問4:結果を予測してください(応用)
list = ["りんご","バナナ","ぶどう","りんご"] dict = {"りんご":0,"バナナ":0,"ぶどう":0} for i in list: dict[i] += 1 print(dict)
- 答えを見る
- {‘りんご’: 2, ‘バナナ’: 1, ‘ぶどう’: 1}
辞書を使ってこのように在庫の管理などが行えます。
今回はlistを用意しましたが、input関数等を使って入力されたり、外部から読み取った情報をリストに収納して同じコードで管理ができます。
また、問3のif文を組み合わせると、新しいkeyを追加する事もできます。
問5:結果を予測してみよう(応用)
list = ["りんご","バナナ","ぶどう","バナナ"] dict = {} for i in list: if i not in dict.keys(): dict[i] = 0 dict[i] += 1 print(dict)
- 答えを見る
- {‘りんご’: 1, ‘バナナ’: 2, ‘ぶどう’: 1}
問3と問4の組み合わせです。
空の辞書を用意して、リストの要素がなければkeyとして作成し、値を0にしています。
その後リストの要素をカウントアップしています。