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

Python入門・応用08辞書サムネイル
Python入門・応用講座

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

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

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

この記事の執筆・監修

キノコード
キノコード

テクノロジーアンドデザインカンパニー合同会社のCEO。
日本最大級のプログラミング教育のYouTubeチャンネル「キノコード」や、プログラミング学習サービス「キノクエスト」を運営。
著書「あなたの仕事が一瞬で片付くPythonによる自動化仕事術」や、雑誌「日経ソフトウエア」や「シェルスクリプトマガジン」への寄稿など実績多数。

辞書の特徴

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が表示されました。

おわりに

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

未経験からはじめるPython学習「キノクエスト」 キノクエスト
  • スキルアップしたいけど何からはじめればよいかわからない…
  • プログラミングスクールに入りたいけど料金が高い…
  • プログラミングを学んでも業務やキャリアに活かせるか不安…

キノクエストは、このような悩みを持つ方にぴったりのプログラミング学習サービスです。
国内最大級のプログラミング学習系YouTubeチャンネル「キノコード」が提供しているから、未経験者にもわかりやすく質の高い学習体験を実感していただけます。

キノクエスト