【Python初心者】辞書の使い方|基本からメソッドを分かりやすく解説

「辞書」は「リスト」とともに、Pythonを学習し始めてすぐに出てくる単語です。

他のプログラミングでは「ハッシュ」という語でお馴染みなので、プログラミング経験者には親しみのある考え方ですが、初心者にとっては難しい壁の一つです。

この記事では、Pythonに触れ始めて間もない方に向け「辞書とはどういうものか」を解説した後、「Pythonにおける辞書の使い方」を説明します。

他のプログラミング言語で「ハッシュ」は使っていたけれどPythonではどんな機能があるんだろうと思っている方は、Pythonにおける辞書の基本操作からお読みください。

Pythonのプログラミング学習に不安を感じている方へ

AIやデータサイエンスを学びたくてPythonを学び始めたけど
「独学ではやっぱり限界がある」
と不安を感じた方にオススメしたいのが、Aidemy Premium Plan
AIに関する幅広い種類の講座徹底したコーチング指導が特徴です!

実務を見据えてPythonをがっつり学習していきたい方は、まずは無料の「オンライン相談」に参加してみてください。

また、Aidemy Premium Planのメリットやデメリットなどについては、以下の記事も参考にしてください。
Aidemy(アイデミー)の評判と口コミまとめ!受講したほうがいい理由を紹介

Pythonで使用される辞書とは

初めに、Pythonで使用される「辞書」(dictionary・ディクショナリ)とは何かについて説明します。

まずは押えておきたいデータ型

Pythonでは、我々が見ている文字の種類を、見えない次元で区別しています。

例えば、「1」と表示されている場合でも、それが文字としての「1」なのか、整数としての「1」なのかで処理の方法が変わります。

「1」を文字として捉えた場合、「1」+「1」は、「1」と「1」を横に並べるという解釈になり、「11」が出力されます。

一方、「1」を整数として捉えた場合の「1」+「1」は、小学校1年生のときに習った足し算と同様に、「2」という結果が出力されます。

以下は、Pythonの基本的なデータ型をまとめました。

データ型
整数(int) -2, -1, 0, 1,2
浮動小数点数(float) -1.5, -0.75, 0.0, 1.7, 3.28
文字列 ‘a’, ‘bb’, ‘あいう’, ‘6日’

辞書は、複数のデータを見出し語と値を設定して扱うことができる型

辞書は、整数・浮動小数・文字列といったデータ型を複数含むことができる箱のようなものです。

例えば、

Birthday = {‘John’: ’10/9′, ‘Paul’: ‘6/18’, ‘George’: ‘2/25’, ‘Ringo’: ‘7/7’}

という形をしており、’Jhon’のような見出し語になる「キー」と、’10/9’のような「値」がペアになった要素がいくつか収納されています(キー・バリュー・ペア)。

辞書のキーや値には、整数や浮動小数などの数を設定することもできます。

辞書の他にも、複数のデータを含むデータ型は存在します。
以下の表をご覧ください。

         

データ型 説明
リスト 一度定義しても後から変更することができるデータ型
タプル リストとほぼ同様だが、一度定義したら変更することができないデータ型
辞書 リストにおけるインデックスを任意の値(キー)に設定できるデータ型
集合 数学の集合の概念と似ており、重複した要素がなく、順序を持たないデータ型

辞書機能の使いどころ

Pythonの辞書機能は、その名の通り、辞書のように見出し語と値を対応させたい時に使います。

Birthday = {‘John’: ’10/9′, ‘Paul’: ‘6/18’, ‘George’: ‘2/25’, ‘Ringo’: ‘7/7’}

上の例では、’Jhon’というキーに対して、誕生日’10/9’が対応するような辞書を定義しています。

これを活用することで、簡単な誕生日検索プログラムが作れるのです。

Pythonにおける辞書の基本操作

ここでは、辞書を作成(定義)するところから、取り出し・結合といった基本操作を解説します。

辞書の作成(定義)

辞書を定義するには{}を用います。

具体的には、

(辞書名) = {(キー): (値), (キー): (値)}

のように定義します。

[code language=”python”]Birthday = {‘John’: ’10/9′, ‘Paul’: ‘6/18’, ‘George’: ‘2/25’, ‘Ringo’: ‘7/7′}[/code]
これは、Birthdayという名前の辞書に、’John’: ’10/9’、’Paul’: ‘6/18’、’George’: ‘2/25’、’Ringo’: ‘7/7’というキーと値のペアがあることを表します。

辞書から1つの値を取り出す(キー指定)

辞書から値を取り出す場合は、辞書名の横にキーを指定します。
[code language=”python”]Birthday = {‘John’: ’10/9′, ‘Paul’: ‘6/18’, ‘George’: ‘2/25’, ‘Ringo’: ‘7/7’} # 辞書の定義
print(Birthday[‘Paul’]) # 6/18を表す[/code]

辞書内の値を変更する

辞書内の値を変更するには、キーを用いて変えたい値を取り出してから、新しい値を代入すれば良いだけです。

以下は、BirthdayというリストのGeorgeの2/25をNDに変更するプログラムです。

[code language=”python”]Birthday = {‘John’: ’10/9′, ‘Paul’: ‘6/18’, ‘George’: ‘2/25’, ‘Ringo’: ‘7/7’} # 辞書の定義
Birthday[‘George’] = ‘ND’ #辞書の値の変更
print(Birthday) # {‘John’: ’10/9′, ‘Paul’: ‘6/18’, ‘George’: ‘ND’, ‘Ringo’: ‘7/7’}を表す[/code]

辞書を連結する

Python3.5以降から、

{**(辞書名), **(辞書名)}

を用いることで、2つ以上の辞書を結合できるようになりました。

[code language=”python”]a = {‘Sato’: 166, ‘Sho’: 171, ‘Masa’: 176} # 辞書の定義
b = {‘Kazu’: 168, ‘Jun’: 172} # 辞書の定義
height = {**a, **b} #aとbを結合した辞書の定義
print(height) # {‘Sato’: 166, ‘Sho’: 171, ‘Masa’: 176, ‘Kazu’: 168, ‘Jun’: 172}を表す[/code]

Pythonのメソッドを使った辞書の操作

Pythonでは、メソッドというあらかじめ用意されている関数を用いることで、多様な辞書の操作が可能になります。

メソッドは、辞書名にドット(.)をつけた後に添えることができます。

リストのように値を返す: values()メソッド

values()メソッドを使用することで、リストのように値を返すことができます。

[code language=”python”]Birthday = {‘John’: ’10/9′, ‘Paul’: ‘6/18’, ‘George’: ‘2/25’, ‘Ringo’: ‘7/7’} # 辞書の定義
for date in Birthday.values():
print(date)

# 10/9
# 6/18
# 2/25
# 7/7[/code]

リストのようにキーを返す: keys()メソッド

keys()メソッドを使用することで、リストのようにキーを返すことができます。
[code language=”python”]Birthday = {‘John’: ’10/9′, ‘Paul’: ‘6/18’, ‘George’: ‘2/25’, ‘Ringo’: ‘7/7’} # 辞書の定義
for name in Birthday.keys():
print(name)

# John
# Paul
# George
# Ringo[/code]

リストのようにキーと値を返す: items()メソッド

keys()メソッドを使用することで、リストのようにキーと値を返すことができます。
[code language=”python”]Birthday = {‘John’: ’10/9′, ‘Paul’: ‘6/18’, ‘George’: ‘2/25’, ‘Ringo’: ‘7/7’} # 辞書の定義
for name, date in Birthday.items():
print(name + ‘は’ + date + ‘生まれです。’)

# Johnは10/9生まれです。
# Paulは6/18生まれです。
# Georgeは2/25生まれです。
# Ringoは7/7生まれです。[/code]

キーが存在が存在しない時に特定の値を返す: get()メソッド

辞書では、存在しないキーを指定して値を取り出そうとすると、エラーが出てしまいます。
get()メソッドでは、エラーが出た場合に「特定の値」を表示することができます。

[code language=”python”]Birthday = {‘John’: ’10/9′, ‘Paul’: ‘6/18’, ‘George’: ‘2/25’, ‘Ringo’: ‘7/7’} # 辞書の定義
print(Birthday.get(‘Bob’, ‘誕生日が登録されていません。’)) # 誕生日が登録されていません。を表す[/code]

キーが未登録の場合に値を登録する: setdefault()メソッド

setdefault()メソッドでは、指定したキーが辞書に存在しない場合、辞書にそのキーと任意の値を設定することができます。
[code language=”python”]Birthday = {‘John’: ’10/9′, ‘Paul’: ‘6/18’, ‘George’: ‘2/25’, ‘Ringo’: ‘7/7’} # 辞書の定義
Birthday.setdefault(‘Bob’, ‘1/1’) # ‘Bob’: ‘1/1’が追加される
print(Birthday) # {‘John’: ’10/9′, ‘Paul’: ‘6/18’, ‘George’: ‘2/25’, ‘Ringo’: ‘7/7’, ‘Bob’: ‘1/1’}を表す[/code]

まとめ: Pythonの辞書機能はPython学習に欠かせない

Pythonの辞書機能は、Pythonでプログラムを書いていく時に欠かせない機能です。

リストやタプルなど似たデータ型を区別し、一つ一つ慣れていきましょう!