検索

キーワード


目次

Pythonにおける辞書(dict)について【初心者向け解説記事】

  • 公開日:2023-06-03 23:46:32
  • 最終更新日:2023-06-03 23:46:14
Pythonにおける辞書(dict)について【初心者向け解説記事】

Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!

フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。

辞書とは?

Pythonの辞書dict)とは、キーkey)とvalue)のペアを格納するためのデータ構造です。辞書型は他の言語ではマップ(Map)やハッシュマップ(HashMap)と呼ばれることもあります。キーと値のペアはアイテムitem)と呼ばれ、キーを使って値にアクセスすることができます。


辞書の作成方法

Pythonの辞書(dict型)は、キーと値の組(キー:値)を要素として持つコレクションです。一つのキーに対して一つの値が関連付けられ、このキーを使って値にアクセスすることができます。

辞書は、波カッコ{})を使って定義します。キーと値のペアはコロン(:)で区切ります。また、各アイテムはカンマ,)で区切られます。以下に例を示します。

my_dict = {"apple": "りんご", "banana": "バナナ", "color": "色"}

この辞書my_dictでは、文字列"apple", "banana", "orange"がそれぞれキーとなり、それぞれに対応する値として”りんご”、”バナナ”、”色”が関連付けられています。

また、辞書には異なるタイプのキーや値を使用することができます。例えば、以下のような辞書も作成可能です。

mixed_dict = {"π": 3.14, 2: [1, 2, 3], (1, 2): "tuple"}


この例では、文字列、整数、そしてタプルがキーとして使われ、少数、リスト、そして文字列が値として使われています。

なお、辞書のキーには変更不能なimmutable)データ型しか使用できません。したがって、後から要素を変更可能であるリストや辞書をキーとして使うことはできません。


辞書の要素へのアクセス

ythonの辞書型では、キーを使用して値にアクセスします。辞書名の後に波カッコを使い、その中にアクセスしたい要素のキーを記述することで、対応する値にアクセスすることができます。以下に例を示します。

my_dict = {"apple": "りんご", "banana": "バナナ", "color": "色"}
print(my_dict["apple"])  # 出力:りんご

キーを使って直接対応する値にアクセスできるのが辞書の特徴です。

一方、存在しないキー(例:dictionary)を指定してアクセスしようとすると、PythonはKeyErrorを発生させます。

KeyError: 'dictionary'

このようなエラーを避けるために、辞書のgetメソッドを使うのがベストプラクティスです。getメソッドは指定したキーが存在しない場合にデフォルトの値を返します。第一引数にキー、第二引数にデフォルト値(省略した場合はNoneが返る)を入力します。

print(my_dict.get("dictionary", 0))  # 出力:0

この例では、"dictionary"というキーが辞書に存在しないため、デフォルトの値0が出力されます。

なお、Pythonの辞書はキーによるアクセスが主ですが、keysメソッドを使って全てのキーを、valuesメソッドを使って全ての値を、そしてitemsメソッドを使って全てのキーと値のペアを取得することも可能です。これらのメソッドはそれぞれキー、値、キーと値のペアのリストを返します。

print(my_dict.keys())  # 出力:dict_keys(['apple', 'banana', 'color'])
print(my_dict.values())  # 出力:dict_values(['りんご', 'バナナ', '色'])
print(my_dict.items())  # 出力:dict_items([('apple', 'りんご'), ('banana', 'バナナ'), ('color', '色')])

また、辞書から直接for文で全ての要素を処理しようとすると、キーのみが返ってきます。このとき、必ずしも辞書に追加した順に返るわけではないことに注意してください。辞書には順番という概念がないためです。

for i in my_dict:
    print(i)
"""
出力:
apple
banana
color
"""

値またはキーと値のペアをfor文で処理したい場合、上記の関数を用いることで処理することが出来ます。

for i in my_dict.items():
    print(i)
"""
出力:
('apple', 'りんご')
('banana', 'バナナ')
('color', '色')
"""


辞書の要素への操作

Pythonの辞書型では、要素の追加、更新、削除といった基本的な操作が可能です。

要素の追加と更新

辞書の要素を追加するには、新たなキーを指定して値を代入します。すでに存在するキーに対して値を代入すると、そのキーの値が更新されます。以下に具体的な例を示します。

my_dict = {"apple": "りんご", "banana": "バナナ", "color": "色"}
my_dict["dictionary"] = "辞書"  # 要素の追加
print(my_dict)  # 出力:{'apple': 'りんご', 'banana': 'バナナ', 'color': '色', 'dictionary': '辞書'}

my_dict["apple"] = "林檎"  # 要素の更新
print(my_dict)  # 出力:{'apple': '林檎', 'banana': 'バナナ', 'color': '色', 'dictionary': '辞書'}


要素の削除

辞書から要素を削除するには、delステートメントを使用します。delの後に辞書名と削除したいキーを指定します。

my_dict = {"apple": "りんご", "banana": "バナナ", "color": "色", "dictionary": '辞書'}
del my_dict["dictionary"]  # 要素の削除
print(my_dict)  # 出力:{'apple': 'りんご', 'banana': 'バナナ', 'color': '色'}

delを使って存在しないキーを削除しようとすると、PythonはKeyErrorを発生させます。これを防ぐために、削除する前にキーが辞書に存在するかどうかを確認する方法もありますが、辞書のpopメソッドを使用するのがベストプラクティスです。popメソッドはgetメソッドの削除版のようなもので、指定したキーが辞書に存在すればその値を削除し、存在しなければデフォルトの値を返します。

my_dict = {"apple": "りんご", "banana": "バナナ", "color": "色"}
my_dict.pop("banana", "存在しない要素を指定しています。")  # 要素の削除
print(my_dict)  # 出力:{'apple': 'りんご', 'color': '色'}
print(my_dict.pop("pineapple", "存在しない要素を指定しています。"))
# 存在しないキーの削除(エラーは発生せず、"存在しない要素を指定しています。"と出力される。)

また、clearメソッドを使用すると、辞書内のすべての要素を消すことが出来ます。

my_dict = {"apple": "りんご", "banana": "バナナ", "color": "色"}
my_dict.clear()
print(my_dict)


まとめ

辞書はPythonにおける非常に強力で便利なデータ型です。辞書は値をインデックスではなくキーで参照することができるため、大量のデータを効率的に管理することができます。また、辞書は非常に柔軟性が高く、様々なデータ型をキーと値として使うことができます。

しかし、その柔軟性と利便性にも関わらず、辞書は順序を持ちません。そのため、順序が必要な場合にはリストなどの順序を保持するコレクションを使用することを検討するべきでしょう。必要に応じてデータ構造を使い分けることで、Pythonのプログラミングをより効率的に行うことが出来ます。



【著者】

ゆうさい

フォワードソフト株式会社のエンジニア。Java、Python、JavaScript、C#などの言語の他、クラウドやネットワーク技術を勉強しています。PythonやVBAを使った自動化で楽をする方法を考えるのが好きです。 最近はジェネレーティブAIの業務利用に関する検証を行っています。 資格を通じて知識を吸収することを心がけており、セキュリティスペシャリスト、データベーススペシャリスト、応用情報技術者、Oracle Certified Java Programmer Gold SE 11、Pythin3 エンジニア認定試験、HTML5プロフェッショナル認定試験レベル2、AWSプラクティショナーなどの情報資格を保有しています。

編集した記事一覧

正社員/フリーランスの方でこのようなお悩みありませんか?

  • 自分に合う案件を定期的に紹介してもらいたい
  • 週2、リモートワークなど自由な働き方をしてみたい
  • 面倒な案件探し・契約周りは任せて仕事に集中したい

そのような方はぜひ、Workteriaサイトをご利用ください!

  • 定期的にご本人に合う高額案件を紹介

  • リモートワークなど自由な働き方ができる案件多数

  • 専属エージェントが契約や請求をトータルサポート