【Python入門・応用】08.辞書|追加や削除、取り出し方など扱い方と特徴を学ぼう(初心者にもわかりやすく解説)

こんにちは。キノコードです。
この動画では、Pythonの辞書について説明します。
説明する内容はこちらです。
はじめに、辞書の特徴について学びましょう。
そして、辞書がもつ機能や扱い方について学習しましょう。

さて、Python学習のキノクエストでは、この動画で説明した問題を解くことができます。
インプットした内容を、今すぐアウトプットして、知識の定着をしてみませんか?
キノクエストは環境構築が不要で、ログインだけですぐにプログラミング学習をはじめられます。
月額1,990円のサブスクです。
いつでもはじめられ、いつでもやめられます。
詳しくは、概要欄に記載のURLからご確認ください。
キノクエストへのご登録をお待ちしております!

それでは、辞書のレッスンスタートです。

辞書の特徴

Pythonにおける辞書とは辞書型とも呼ばれ、リストやタプルと同じように複数の要素をもつデータ型です。
これまでのレッスンで、リストとタプルについて学習しました。
はじめに、簡単におさらいをしてみましょう。
リストとタプルは、見た目はよく似ています。
共通点は、複数の要素をもち、インデックスという順序で管理ができるという点です。
しかし、大きく異なる点があります。
リストとタプルの大きな違いは、要素の変更ができるかどうかにありました。
リストは、要素を変更したり、追加や削除をすることが自由にできます。
これを、ミュータブルなオブジェクトと言います。
一方のタプルはこれができません。
これを、イミュータブルなオブジェクトと言います。

これから学習する辞書は、あとから追加・削除などの変更が可能です。
つまり、ミュータブルなオブジェクトです。
そして、リストやタプルは、要素をインデックスという順序で管理ができました。
辞書にはインデックスが存在しません。
それでは詳しく見ていきましょう。

辞書型は、このように、KeyとValueの組み合わせで格納されています。
それぞれの要素は、カンマで区切ります。
{key1: value1, key2: value2, key3: value3}

辞書の作り方

それでは実際に書いてみましょう。
先ほど例で紹介したように、辞書型はkeyとvalueで構成されています。
今回は対となる組み合わせを3つ用意しました。
先ほど触れましたが、辞書内に含まれるデータが複数ある場合は、各データ間をカンマで区切ります。
Keyは「リンゴ」「オレンジ」「バナナ」としました。
Keyは、数値や文字列を問わずに格納することができます。
なお、文字列を格納する場合はシングルクォーテーションもしくは、ダブルクォーテーションで囲む必要があります。
Valueは「10」「20」「30」としました。
Valueも格納する値は数値や文字列を問わずに格納することができます。
この作成した辞書を「d」という変数に代入します。print関数でdを表示させてみましょう。
実行します。

d = {'リンゴ': 10, 'オレンジ': 20, 'バナナ': 30}
print(d)

辞書が表示されました。

データ型を確認してみましょう。
データ型を確認するには、type関数を使います。
typeの丸括弧内に確認したいデータを記述します。
実行してみます。

d = {'リンゴ': 10, 'オレンジ': 20, 'バナナ': 30}
print(type(d))

辞書型であるdictが表示されました。

次に、dict関数を使用して作成する方法です。
dict関数は、keyとvalueをセットにすることで辞書を作成することができます。
dictの丸括弧の中に、それぞれのkeyに対するvalueをイコールでセットにします。
ここでは、keyが文字列だとしても、シングルクォーテーションで括る必要がありません。

実行します。

d = dict(リンゴ=10, オレンジ=20, バナナ=30)
print(d)
print(type(d))

辞書を作成できました。

次に、keyとvalueをリストでセットにしてdict関数に渡してみましょう。
実行します。

d = dict([['リンゴ', 10], ['オレンジ', 20], ['バナナ', 30]])
print(d)
print(type(d))

同様に、辞書を作成することができました。

辞書のkeyのルール

また辞書型は通常、1つのkeyに複数のValueを登録できません。
つまり、keyは一位である必要があります。

"d = {'リンゴ': 10, 'オレンジ': 20, 'バナナ': 30, 'リンゴ': 40}
print(d)

リンゴのValueが、後に記載されている40に上書きされています。
Keyは一意でなければいけませんが、Valueは一意である必要はありません。

キーとバリューの取得

それでは、作成した辞書のKeyとvalueの一覧を取得してみましょう。
それぞれkeysメソッド、valuesメソッドを使って取得することができます。

まずはkeyの一覧を取得します。
辞書型が代入されている変数にドット、keys丸括弧と書きます。
これをprintでくくって表示させます。
実行します。

d = {'リンゴ': 10, 'オレンジ': 20, 'バナナ': 30}
print(d.keys())

Keyの一覧が表示されました。

今度は、Valueの一覧を取得します。
辞書型が代入されている変数にドット、values丸括弧と書きます。
実行します。

d = {'リンゴ': 10, 'オレンジ': 20, 'バナナ': 30}
print(d.values())

Valueの一覧が表示されました。

辞書の要素にアクセス

ここまでKeyやValueの一覧を取得する方法を見てきました。
次は、個別のValueを取得する方法を見ていきましょう。
辞書から個別のvalueを取り出すには、Keyを指定する必要があります。

辞書にはインデックス番号という概念がありません。
ここがリストやタプルと大きく異なる点です。
なお、keyを指定する際には角括弧を使用します。
dに角括弧、リンゴと記述しましょう。
実行してみます。

d = {'リンゴ': 10, 'オレンジ': 20, 'バナナ': 30}
print(d['リンゴ'])

リンゴのValueの10が表示されました。
このように、Keyを指定することで、Keyと紐づくValueを取得することができます。
存在しないKeyを指定すると、エラーになるので注意しましょう。

次はValueを書き換える方法を説明します。
KeyのバナナのValueを30から100に書き換えてみます。Keyを指定してValueを代入します。
実行します。

d = {'リンゴ': 10, 'オレンジ': 20, 'バナナ': 30}
d['バナナ'] = 100
print(d)

バナナのValueが100に書き換えられています。
このように値を書き換えたいときは、Keyを指定して、新しいValueを代入します。

辞書に要素を追加

次は辞書内に新しくデータを追加する方法を説明します。
冒頭でも説明したとおりに、辞書はデータを追加することができます。
新しくデータを追加するには、新しいKeyを指定して、そこにValueを代入します。
dに角括弧、スイカと記述して40を代入しましょう。
実行してみます。

d = {'リンゴ': 10, 'オレンジ': 20, 'バナナ': 30}
d['スイカ'] = 40
print(d)

スイカが追加されています。
このように、辞書内に新しくデータを追加する場合、新しいKeyを記述し、Valueを代入します。

辞書のデータを更新

次に、辞書同士を使ってデータを更新する方法を説明します。
今までdとしていた変数名をd1としましょう。
変数d2に新しく辞書を作成します。
スイカとメロンというKeyに、それぞれ40と50をvalueとして登録します。
今回は「d2」を使って、「d1」の辞書を更新します。
辞書同士で、辞書の更新や追加を行う場合にはupdateメソッドを使用します。
更新対象の辞書、ドット、update、丸括弧を書いて、その中に別の辞書を記述します。
実行します。

d1 = {'リンゴ': 10, 'オレンジ': 20, 'バナナ': 30}
d2 = {'スイカ': 40, 'メロン': 50}
d1.update(d2)
print(d1)

d1の辞書が更新されています。

辞書の要素を削除

次に、辞書内のデータを削除する方法を説明します。
削除にはdel文を使用します。
今回はKey「バナナ」のデータを削除してみましょう。
delと書いて、 辞書が代入されている変数d、角括弧でバナナと記述します。
実行してみます。

d = {'リンゴ': 10, 'オレンジ': 20, 'バナナ': 30}
del d['バナナ']
print(d)

バナナのデータが削除されています。
このように、辞書内のデータを削除したい場合は、Keyを指定することで削除が行えます。

続けて、2つの要素を削除してみましょう。
del のあとに、ひとつずつ、辞書とKEYを指定して、カンマで区切って指定します。
リンゴとバナナを削除してみましょう。
複数削除したい場合は、このようにカンマで区切ります。
実行します。

d = {'リンゴ': 10, 'オレンジ': 20, 'バナナ': 30}
del d['リンゴ'], d['バナナ']
print(d)

リンゴとバナナが削除されています。

popメソッド

もうひとつ、popメソッドを使ったデータの削除方法も説明します。
先ほどと同様にKey「バナナ」のデータを削除します。
dドット、pop、丸括弧の中にkeyを記述します。popを使う場合は、丸括弧であることに注意してください。
実行してみます。

d = {'リンゴ': 10, 'オレンジ': 20, 'バナナ': 30}
d.pop('バナナ')
print(d)

バナナのデータが削除されています。
このようにpopメソッドを使うことで、同じようにデータを削除することができます。

辞書の要素を全て削除

次に、辞書内のデータをすべて削除する方法を説明します。
これにはclearメソッドを使用します。
データをすべて削除して、新たに辞書を作り直したい場合に便利な方法です。
辞書dの後にドット、clear、丸括弧をつけることで、すべて削除することができます。
実行します。

d = {'リンゴ': 10, 'オレンジ': 20, 'バナナ': 30}
d.clear()
print(d)

データがすべて削除されています。

辞書の要素を検索

最後に、キー要素が辞書内にあるかどうか検索する方法を説明します。
こちらはin演算子を使用します。
キー要素「リンゴ」が辞書内にあるかどうかを検索してみましょう。
キー要素が辞書内にあるかどうかを検索するには、検索したいKeyを書いて、in、inの後に辞書名を記述します。
キー要素が辞書内に存在する場合は「True」が返され、存在しない場合は「False」が返されます。
実行します。

d = {'リンゴ': 10, 'オレンジ': 20, 'バナナ': 30}
print('リンゴ' in d)

Trueが表示されました。

直接文字列を書くのではなく、変数を使って検索することもできます。
xという変数にリンゴを代入します。
先ほどリンゴの文字列を記述したところにxを書きます。
実行してみます。

x = 'リンゴ'
d = {'リンゴ': 10, 'オレンジ': 20, 'バナナ': 30}
print(x in d)

Trueが表示されました。

おわりに

さて、レッスンは以上です。