PR

【Python】辞書(dictionary/dict型)の基本を3分でわかりやすく解説

Python

Pythonの辞書型(dict型)とは、キー(key)と値(value)をペアにしてデータを格納するデータ型のこと。この特性を活用することで様々なデータの検索や操作が容易になります。

# あるクラスの生徒とその身長(cm)を管理する辞書
student_heights = {
    'Taro': 168,
    'Hanako': 156,
    'Yosuke': 174,
    'Yuko': 162
}

参考 Pythonの特徴

辞書型の概念や基本的な使い方、その他高度な使用法については、初めてPythonを学ぶ人には難しく感じるかもしれません。

この記事ではPython初心者向けに辞書型(dictionary/dict型)の基本を1からわかりやすく解説します。読者の方々が辞書型を効果的に使えるようになるためのガイドをご提供します。

このページで学べる内容
  • 辞書型の基本: 辞書型の定義方法 / キーと値の概念
  • 辞書型の操作: 辞書の要素の追加・変更・削除
  • 辞書型のメソッド: keys(), values(), items(), get(), update(), pop(), clear()などのよく使うメソッドの使用方法

Pythonエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識の1つです。是非最後までご覧ください。

参考 Pythonの基本的な書き方・構文ルール

スポンサーリンク

Python:辞書型(dict型)とは?

辞書型とは、Pythonで提供されるデータ構造の1つで、それぞれの要素がキーと値のペアとして格納される形式のデータ構造です。

具体的な例を見てみましょう。

# あるクラスの生徒とその身長(cm)を管理する辞書
student_heights = {
    'Taro': 168,
    'Hanako': 156,
    'Yosuke': 174,
    'Yuko': 162
}

辞書型は「キー(key)」と「値(value)」のペアでデータを管理します。

上記のコードでは、student_heightsという名前の辞書を定義しています。キーと値のペアは、コロン(:)を使用して区切られ、それぞれのペアはカンマ(,)で区切られます。全体は波括弧({})で囲みます。

キーは生徒の名前('Taro''Hanako''Yosuke''Yuko')で、値はそれぞれの生徒の身長です。

Python 辞書型
図1:Python辞書型

辞書のキーとしては、変更不可能(immutable)な型が利用できます。→言い換えると、数値、文字列、タプルなどがキーとして使えます。

ただし、リストや他の辞書などはキーとして使えません。なぜなら、リストや辞書は変更可能(mutable)で、その中身が変わる可能性があるからです。辞書はキーを使って値を検索するため、キーが変わってしまうとその後の処理で問題が起きてしまう可能性があるからです。

参考 Python:リストとは?

値については、どんな型でも構いません。文字列、数値、リスト、タプル、さらには他の辞書まで、あらゆる型のデータを値として持つことができます。

Python:辞書型へのアクセス

辞書から値を取得する最も一般的な方法は、キーを使って直接アクセスする方法です。以下に例を示します。

student_heights = {
    'Taro': 168,
    'Hanako': 156,
    'Yosuke': 174,
    'Yuko': 162
}

print(student_heights['Taro'])  # これは168を出力します

参考 print関数の使い方

この例では、'Taro'というキーを指定して、そのキーに対応する値(Taroの身長)を取得しています。同様に、他の生徒の身長もキーを使って取得することができます。

しかし、存在しないキーを指定して値を取得しようとすると、KeyErrorが発生します。

例えば、student_heights['Ken']とすると、「KeyError: 'Ken'」というエラーメッセージが表示されます。これは'Ken'というキーが辞書に存在しないためです。

student_heights = {
    'Taro': 168,
    'Hanako': 156,
    'Yosuke': 174,
    'Yuko': 162
}

print(student_heights['ken'])  # KeyError: 'ken'

このようなKeyErrorを避けるためには、辞書のgetメソッドを使う方法があります。getメソッドを使うと、指定したキーが辞書に存在しない場合にもエラーを回避することができます。その代わりに、デフォルトの値(指定しない場合はNone)が返されます。

student_heights = {
    'Taro': 168,
    'Hanako': 156,
    'Yosuke': 174,
    'Yuko': 162
}

print(student_heights.get('Ken'))  # これはNoneを出力します

また、getメソッドではデフォルトの値を自由に指定することもできます。

student_heights = {
    'Taro': 168,
    'Hanako': 156,
    'Yosuke': 174,
    'Yuko': 162
}

print(student_heights.get('Ken', 0))  # これは0を出力します

この例では、デフォルト値である0が出力されます。

辞書型のメソッドについてはページ後半で再度詳しく解説いたします。

辞書型の特性
  • キーと値のペア:辞書はキーと値のペアを格納します。これにより、データに名前をつけて格納することができ、後でその名前(キー)を使ってデータ(値)を取り出すことができます。
  • 順序の保持:Python 3.7以降では、辞書は要素を追加した順番を保持します。これは実装上の詳細であり、Python言語の仕様としては順序が保証されていないことに注意してください。
  • 高速なアクセス:辞書はキーを用いてデータに高速にアクセスできるデータ構造です。これにより、大量のデータを効率的に管理することが可能になります。
辞書型の制約
  • キーの一意性:辞書では各キーが一意である必要があります。つまり、同じキーを持つ要素を複数持つことはできません。新しい値を同じキーで追加すると、既存の値が上書きされます。
  • 不変なキー:辞書のキーは、変更不可能(イミュータブル)なデータ型である必要があります。したがって、数値や文字列、タプルなどはキーとして使用できますが、リストや辞書などの変更可能なデータ型はキーとして使用できません。
  • 値のデータ型:辞書の値にはどんなデータ型も使用できます。また、同じ値が複数のキーに対応して存在しても問題ありません。

Python:辞書型の操作(追加・変更・削除)

ここからはPythonの辞書型における追加・変更・削除の操作について、サンプルコードとともに詳しく解説します。

Pythonの辞書型:値の追加と更新

Pythonの辞書型に新たにキーと値を追加するには新しいキーに対して値を割り当てます。また、既存のキーに対して新たな値を割り当てることで、そのキーの値を更新することもできます。

student_heights = {'Taro': 168, 'Hanako': 156}

# 新しいキーと値を追加
student_heights['Yosuke'] = 174
print(student_heights)  # {'Taro': 168, 'Hanako': 156, 'Yosuke': 174}

# 既存のキーの値を更新
student_heights['Taro'] = 170
print(student_heights)  # {'Taro': 170, 'Hanako': 156, 'Yosuke': 174}

上記の例では、最初に辞書student_heights'Yosuke'という新しいキーと174という新しい値を追加。そして、続けて既存のキー'Taro'の値を170に更新しています。

Pythonの辞書型:値の削除

Pythonの辞書型から特定のキーとその値を削除するにはdelステートメントを使います。

また、popメソッドを使うと、キーとその値を辞書から削除するとともに、削除した値を取得することができます。

student_heights = {'Taro': 170, 'Hanako': 156, 'Yosuke': 174}

# キーと値を削除
del student_heights['Taro']
print(student_heights)  # {'Hanako': 156, 'Yosuke': 174}

# キーと値を削除し、値を取得
removed_height = student_heights.pop('Hanako')
print(removed_height)  # 156
print(student_heights)  # {'Yosuke': 174}

上記の例では、最初に'Taro'というキーとその値を辞書から削除。次に、popメソッドを使用して'Hanako'というキーとその値を削除し、削除した値をremoved_heightに格納しています。

以上がPythonの辞書型の基本的な操作になります。これらの操作を理解し、使いこなすことで、辞書型のデータを効率的に扱うことができるようになるでしょう。

Python:辞書(dict型)のメソッド

本文前半で解説した通り、辞書型には便利なメソッドが存在しています。この章では辞書型のメソッドについて詳しく解説します。

dict:getメソッド

getメソッドは、指定したキーに対応する値を辞書から取得します。基本的な使い方は以下の通り。

value = dictionary.get(key)

ここで、dictionaryは対象の辞書、keyは取得したい値に対応するキーです。valueは取得した値になります。

重要な点として、getメソッドはキーが辞書に存在しない場合でもエラーを発生させません。代わりにNoneを返します。この特性は、辞書から値を安全に取得するために非常に便利です。

また、getメソッドには2つ目の引数を指定することもできます。この2つ目の引数は、キーが辞書に存在しない場合に返すデフォルト値です。

value = dictionary.get(key, default)

getメソッドのサンプルコードはこちら。

student_heights = {'Taro': 170, 'Hanako': 156}

# 'Taro'の身長を取得
taro_height = student_heights.get('Taro')
print(taro_height)  # 170

# 'Yosuke'の身長を取得(存在しないため、Noneが返る)
yosuke_height = student_heights.get('Yosuke')
print(yosuke_height)  # None

# 'Yosuke'の身長を取得(存在しないため、デフォルト値の0が返る)
yosuke_height = student_heights.get('Yosuke', 0)
print(yosuke_height)  # 0

dict:keysメソッド

keysメソッドは、辞書に含まれる全てのキーを返すメソッドです。このメソッドを使うと、辞書内のすべてのキーを一覧できます。

keys = dictionary.keys()

ここで、dictionaryは対象の辞書で、keysは取得したキーのリストになります。

実際に、以下のようなサンプルコードで動作を確認してみます。

student_heights = {'Taro': 170, 'Hanako': 156, 'Yosuke': 174}

# 辞書の全てのキーを取得
keys = student_heights.keys()
print(keys)  # dict_keys(['Taro', 'Hanako', 'Yosuke'])

上記のコードでは、keysメソッドを使用してstudent_heights辞書内のすべてのキーを取得し、それを表示しています。

keysメソッドが返すオブジェクトは、リストと似た振る舞いをしますが、正確には"ビュー(view)"と呼ばれる特別なオブジェクトです。これは辞書のキーに対する動的なビューで、辞書が変更されたときにその変更を反映します。

dict:valuesメソッド

valuesメソッドは、辞書に含まれる全ての値を返すメソッドです。このメソッドを使うと、辞書内のすべての値を一覧できます。

values = dictionary.values()

dictionaryは対象の辞書で、valuesは取得した値のリストになります。

以下のようなサンプルコードで具体的な動作を確認してみます。

student_heights = {'Taro': 170, 'Hanako': 156, 'Yosuke': 174}

# 辞書の全ての値を取得
values = student_heights.values()
print(values)  # dict_values([170, 156, 174])

上記のコードでは、valuesメソッドを使用してstudent_heights辞書内のすべての値を取得し、それを表示しています。

valuesメソッドが返すオブジェクトは、keysメソッドと同様、正確には"ビュー(view)"と呼ばれる特別なオブジェクトです。

dict:itemsメソッド

itemsメソッドは、辞書に含まれる全てのキーと値のペアを返すメソッド。このメソッドを使うと、辞書内のすべてのキーと値のペアを一覧で確認することができます。

items = dictionary.items()

dictionaryは対象の辞書で、itemsは取得したキーと値のペア(アイテム)のリストになります。

以下のサンプルコードで具体的な動作を確認してみます。

student_heights = {'Taro': 170, 'Hanako': 156, 'Yosuke': 174}

# 辞書の全てのアイテムを取得
items = student_heights.items()
print(items)  # dict_items([('Taro', 170), ('Hanako', 156), ('Yosuke', 174)])

上記のコードでは、itemsメソッドを使用してstudent_heights辞書内のすべてのアイテム(キーと値のペア)を取得し、それを表示しています。

dict:popメソッド

popメソッドは、辞書から指定したキーに対応するアイテム(キーと値のペア)を削除し、その値を返すメソッドです。以下は基本的な使い方は以下の通り。

value = dictionary.pop(key)

dictionaryは対象の辞書、keyは削除したいアイテムのキーです。valueは削除したアイテムの値になります。

指定したキーが辞書に存在しない場合、popメソッドはKeyErrorを発生させます。ただし、popメソッドには2つ目の引数を指定することもでき、それを指定することでエラーを回避させることも可能です。

value = dictionary.pop(key, default)

以下に具体的なサンプルコードを示します。

student_heights = {'Taro': 170, 'Hanako': 156}

# 'Taro'の身長を削除し、その値を取得
taro_height = student_heights.pop('Taro')
print(taro_height)  # 170
print(student_heights)  # {'Hanako': 156}

# 'Yosuke'の身長を削除(存在しないため、デフォルト値の0を返す)
yosuke_height = student_heights.pop('Yosuke', 0)
print(yosuke_height)  # 0

dict:clearメソッド

clearメソッドは、辞書からすべてのアイテム(キーと値のペア)を削除するメソッドです。このメソッドを使うと、辞書の内容を全てクリアすることができます。

dictionary.clear()

以下に具体的なサンプルコードを示します。

student_heights = {'Taro': 170, 'Hanako': 156, 'Yosuke': 174}

print(student_heights)  # {'Taro': 170, 'Hanako': 156, 'Yosuke': 174}

# 辞書の内容を全てクリア
student_heights.clear()

print(student_heights)  # {}

上記のコードでは、まずstudent_heights辞書の内容を表示し、次にclearメソッドを使用して辞書の内容を全てクリアします。その結果、再度辞書の内容を表示すると空の辞書({})が表示されるということを示しています。

Python:辞書(dict)まとめ

Pythonの辞書型(dict)とは
  • Pythonの辞書型(dict)は、キーと値のペアの集合を格納するデータ構造です。以下の特性を持ちます。
    • キーと値のペア:辞書はキーと値のペアを保存します。キーを使って値にアクセスできます。
    • ミュータブル:辞書は変更可能(mutable)です。アイテムの追加、変更、削除が可能です。
    • ユニークなキー:辞書のキーはユニークでなければなりません。同じキーを持つアイテムを辞書に追加しようとすると、新しいアイテムが既存のアイテムを上書きします。
# キーと値のペア
student_heights = {'Taro': 170, 'Hanako': 156, 'Yosuke': 174}
print(student_heights['Taro'])  # 170

# 変更可能(mutable)
student_heights = {'Taro': 170, 'Hanako': 156}
student_heights['Yosuke'] = 174  # アイテムを追加
student_heights['Taro'] = 175  # 既存のアイテムを変更
del student_heights['Hanako']  # アイテムを削除
print(student_heights)  # {'Taro': 175, 'Yosuke': 174}

# ユニークなキー
# →同じキーを持つアイテムを辞書に追加しようとすると新しいアイテムが既存のアイテムを上書きする
student_heights = {'Taro': 170, 'Hanako': 156}
student_heights['Taro'] = 175  # 'Taro'の値が170から175に変更される
print(student_heights)  # {'Taro': 175, 'Hanako': 156}

始めてPythonを勉強するのは結構難しいですよね。

でもその悩みを抱えているのは一人じゃありません。全てのPython使いが同じ道を進んできました。

Pythonをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?今すぐ行動したい方は以下の記事をチェック!

読者料典 Python入門:学習カリキュラム ←こちらから!

このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

  1. 勉強:一度理解した内容を忘れないように。
    → アウトプットは「最強のインプット」である! 
  2. 備忘:忘れたとしても後から見返せるように。
    → 未来の自分への「お手紙」を書いています。 
  3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    → あなたの知識は誰かにとっての「価値ある情報」です。 

副業ブログの始め方はこちらから

スポンサーリンク
Python
シェアする
ビズドットオンラインをフォローする
タイトルとURLをコピーしました