Pythonの辞書のガイド

Pythonには様々な組み込みデータ構造があり、異なる種類のデータを格納することができます。Python辞書はそのようなデータ構造の1つで、データをキーと値のペアの形で格納することができ、概念的にはマップに似ています。Python辞書の値は、キーを使ってアクセスすることができます。

このガイドでは、Python辞書のキーと値のペアについて説明します。
このガイドでは、Pythonの辞書について詳しく説明します。まず、基本的な辞書操作(辞書の作成、更新、要素の削除と追加など)を取り上げ、その後、さらに興味深いメソッドをいくつか見ていきます。

Pythonで辞書を作成する方法

Pythonの辞書を作るには、中括弧 {} の中に一連の項目 (エントリ) を入れ、カンマ (,) で区切ります。各エントリーはキーと値で構成され、キーバリューペアとしても知られています。

注:値は任意のデータ型に属することができ、それらは繰り返すことができますが、キーは一意である必要があります。また、同じキーに複数の値を割り当てることはできませんが、値のリストを(1つの値として)割り当てることは可能です。

次の例は、Pythonの辞書の作成方法を示しています。

空の辞書を作成する

example_dict = {}


整数のキーを持つ辞書の作成。

example_dict = {1: 'mango', 2: 'pawpaw'}


混合キーによる辞書の作成

example_dict = {'fruit': 'mango', 1: [4, 6, 8]}


Pythonの dict() メソッドを明示的に呼び出して、辞書を作成することもできます。

example_dict = dict({1:'mango', 2:'pawpaw'})


また、以下のように、配列から辞書を作ることもできます。

example_dict = dict([(1,'mango'), (2,'pawpaw')])


辞書は入れ子にすることもできる。つまり、ある辞書を別の辞書の中に作ることができる。たとえば

example_dict = {1: {'student1' : 'Nicholas', 'student2' : 'John', 'student3' : 'Mercy'},
        2: {'course1' : 'Computer Science', 'course2' : 'Mathematics', 'course3' : 'Accounting'}}


辞書の内容を表示するには、Pythonの print() メソッドを使用し、辞書名をメソッドの引数として渡します。

example_dict = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}


print(example_dict)


この結果、以下のようになります。

{'Company': 'Toyota', 'model': 'Premio', 'year': 2012}


Python辞書の要素にアクセスする方法

辞書の項目にアクセスするには、角括弧記法を使ってキーを渡します。

example_dict = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}


x = example_dict["model"]


print(x)


これは、”model “キーに関連する値を取得するものです。

Premio


設定」項目や一般的な定数を辞書に格納することで、一元的なアクセスを容易にすることができます。

example_dict = {'Name': 'Mercy', 'Age': 23, 'Course': 'Accounting'}


print("Student Name:", example_dict['Name'])
print("Course:", example_dict['Course'])
print("Age:", example_dict['Age'])


これは次のようになる。

Student Name: Mercy
Course: Accounting
Age: 23


辞書オブジェクトは get() メソッドも提供し、同様に辞書の要素にアクセスするために使用することができます。このメソッドにドット演算子を使って辞書名を追加し、キーの名前をメソッドの引数として渡します。

example_dict = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}


x = example_dict.get("model")


print(x)


この結果、以下のようになります。

Premio


これで、辞書の要素にアクセスする方法がわかりました。次のセクションでは、すでに存在する辞書に新しい要素を追加する方法について説明します。

Pythonの辞書に要素を追加する方法

辞書に新しい要素を追加する方法はたくさんあります。一般的な方法は、新しいキーを追加して、それに値を割り当てることです。

example_dict = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}


example_dict["Capacity"] = "1800CC"


print(example_dict)


キーが存在しない場合、それに値を割り当てる – それは辞書に追加されます。

{'Capacity': '1800CC', 'year': 2012, 'Company': 'Toyota', 'model': 'Premio'}


新しい要素はキーとして Capacity を持ち、対応する値として 1800CC を持ちます。これは辞書の最初の要素として追加されました。もうひとつの例を示します。まず、最初に空の辞書を作成します。

example_dict = {}


print("An Empty Dictionary: ")
print(example_dict)


それが空であることを検証してみましょう。

An Empty Dictionary:


この辞書はまだ何も保存されていないので、何も返しません。それでは、1つずつ要素を追加していきましょう。

example_dict[0] = 'Apples'
example_dict[2] = 'Mangoes'
example_dict[3] = 20


print("
3 elements have been added: ")
print(example_dict)


この結果、次のようになります。

3 elements have been added:
{0: 'Apples', 2: 'Mangoes', 3: 20}


要素を追加するために、キーとそれに対応する値を指定しました。

example_dict[0] = 'Apples'


上の例では、0がキーで、Appleが値となります。コレクションなど、1つの値として参照できるものであれば、1つのキーに複数の値を追加することも可能です。

# These three values are implicitly converted into a set
example_dict['Values'] = 1, "Pairs", 4


print("
3 elements have been added: ")
print(example_dict)


そして、セットを値として持つキーがあります。

3 elements have been added:
{'Values': (1, 'Pairs', 4)}


辞書に新しい要素を追加する以外に、辞書の要素を更新したり変更したりすることもできます。

辞書の要素を更新する方法

辞書に値を追加した後、既存の辞書要素を変更することができます。対応する値を変更するために、要素のキーを使用します。

example_dict = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}


example_dict["year"] = 2014


print(example_dict)


この例では、キーyearの値を古い値2012から新しい値2014に更新しています。

{'year': 2014, 'model': 'Premio', 'Company': 'Toyota'}


辞書の要素を削除する方法

辞書から要素を削除するにはいくつかの方法がありますが、このセクションで1つずつ説明します。

キーワード del は、指定されたキーを持つ要素を削除するために使用されます。

example_dict = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}


del example_dict["year"]


print(example_dict)


この結果は

{'Company': 'Toyota', 'model': 'Premio'}


キーワード del に続けて辞書名を呼び出します。辞書名の後に続く角括弧の中には、辞書から削除する要素のキー、この例では year を渡しました。すると、辞書の year の項目が削除される。

キーと値のペアを削除する別の方法として、 pop() メソッドを使用して、削除するエントリのキーをメソッドの引数として渡します。

example_dict = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}


example_dict.pop("year")


print(example_dict)


ここでは、pop() メソッドに辞書名を付与して呼び出しています。このコードを実行すると、辞書の year のエントリーが削除されます。

{'Company': 'Toyota', 'model': 'Premio'}


popitem()` メソッドは、辞書に最後に挿入された項目を削除するもので、キーを指定する必要はありません。次の例を見てください。

example_dict = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}


example_dict.popitem()


print(example_dict)


辞書に最後に挿入された項目は year です。これは popitem() メソッドを呼び出すと削除されました。

{'Company': 'Toyota', 'model': 'Premio'}


しかし、辞書全体を削除したい場合はどうすればよいでしょうか。すべてのキーに対してこれらのメソッドを使用するのは困難であり、面倒でしょう。その代わりに、 del キーワードを使って、辞書全体を削除することができます。

example_dict = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}


del example_dict


print(example_dict)


しかし、このコードはエラーを返します。なぜなら、辞書はあらかじめ削除されているので、存在しない辞書にアクセスしようとしているからです。

NameError: name 'example_dict' is not defined


ユースケースによっては、辞書自体を削除するのではなく、すべての辞書要素を削除する必要があるかもしれません。これは、辞書に対して clear() メソッドを呼び出すことで実現できます。

example_dict = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}


example_dict.clear()


print(example_dict)


これにより、空の辞書が得られます (すべての辞書要素が削除されたため)。

{}


Python のその他の一般的な辞書メソッド

Pythonには、これまで説明してきた基本的なメソッド以外にも、多くの興味深いメソッドが用意されています。以下の章では、Pythonで辞書と一緒に使えるその他のメソッドを見ていきましょう。

len() メソッド

このメソッドを使用すると、辞書の要素数を数えることができます。たとえば

example_dict = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}


print(len(example_dict))


この辞書には3つの項目があるので、このメソッドは 3 を返します。

3


コピー()メソッド

このメソッドは、既存の辞書のコピーを返します。例えば

example_dict = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}
x = example_dict.copy()


print(x)


コピーが正しく作成され、変数 x に代入されていることを確認しよう。

{'Company': 'Toyota', 'year': 2012, 'model': 'Premio'}


コンソールに x を表示すると、 example_dict 辞書に格納されているものと同じ要素が格納されていることがわかります。

注意: これは、コピーした辞書に変更を加えても、元の辞書には影響しないので便利です。

アイテム()メソッド

このメソッドは、呼び出されると、反復可能オブジェクトを返します。iterable オブジェクトは、リストのタプルとして、辞書のキーと値のペアを持ちます。このメソッドは、主に、辞書を繰り返し処理する場合に使用されます。

このメソッドは、以下のように、単に辞書オブジェクト名で呼び出されます。

example_dict = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}


for k, v in example_dict.items():
  print(k, v)


これは次のようになります。

('Company', 'Toyota')
('model', 'Premio')
('year', 2012)


items()`が返すオブジェクトは、辞書に実装された変更を表示するためにも使うことができます。

example_dict = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}


x = example_dict.items()


print(x)


example_dict["model"] = "Mark X"


print(x)


このコードでは、辞書の値を変更すると、その変更を反映して items オブジェクトも更新されることを説明しています。

dict_items([('Company', 'Toyota'), ('model', 'Premio'), ('year', 2012)])
dict_items([('Company', 'Toyota'), ('model', 'Mark X'), ('year', 2012)])


fromkeys() メソッド

このメソッドは、指定されたキーと値を持つ辞書を返します。以下のような構文になります。

dictionary.fromkeys(keys, value)


必須の keys パラメータの値は反復可能で、新しい辞書のキーを指定します。Valueパラメータの値はオプションで、すべてのキーのデフォルト値を指定します。デフォルト値はNone` です。

例えば、3つのキーがすべて同じ値、つまり 25 で構成される辞書を作成する必要があるとします。

name = ('John', 'Nicholas', 'Mercy')
age = 25


example_dict = dict.fromkeys(name, age)


print(example_dict)


fromkeys()` メソッドが先ほど説明したような辞書を作成したことを確認しましょう。

{'John': 25, 'Mercy': 25, 'Nicholas': 25}


予想通り、 fromkeys() メソッドはキーを選んで、そのキーと値 25 を組み合わせて、望みの辞書を作成することができました。

パラメータ keys の値は必須です。次の例では、 values パラメータの値が指定されていない場合にどうなるかを示します。

name = ('John', 'Nicholas', 'Mercy')


example_dict = dict.fromkeys(name)


print(example_dict)


この場合、デフォルトの値として None が使用されます。

{'John': None, 'Mercy': None, 'Nicholas': None}


setdefault() メソッド

このメソッドは、指定されたキーを持つ要素の値を取得する必要があるときに適用されます。キーが見つからない場合は、指定されたデフォルト値と一緒に辞書に挿入されます。

このメソッドは、次の構文をとります。

dictionary.setdefault(keyname, value)


このメソッドでは、keyname パラメータが必要です。これは、値を返す必要がある項目のキーネームを表します。valueパラメータはオプションです。辞書にすでにそのキーが含まれている場合、このパラメータは何の効果も持ちません。もしキーが存在しない場合は、このメソッドで与えられた値がキーの値となります。デフォルト値はNone` です。

example_dict = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}


x = example_dict.setdefault("color", "Gray")


print(x)


辞書には color のキーがありません。setdefault()メソッドはこのキーを挿入し、指定された値、つまりGray` がその値として使用されました。

Gray


次の例は、キーに対応する値が存在する場合にこのメソッドがどのように振る舞うかを示しています。

example_dict = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}


x = example_dict.setdefault("model", "Allion")


print(x)


キー model に対応する値がすでに存在するので、値 Allion は辞書に影響を与えません。

Premio


キー()メソッド

このメソッドもイテレート可能なオブジェクトを返します。返されるオブジェクトは、辞書に含まれるすべてのキーのリストです。また、items() メソッドと同様に、返されたオブジェクトは辞書に加えられた変更を反映するために使用することができます。

このメソッドを使うには、以下のように、辞書の名前に対してのみ呼び出すようにします。

dictionary.keys()


例えば

example_dict = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}


x = example_dict.keys()


print(x)


この結果、以下のようになる。

dict_keys(['model', 'Company', 'year'])


多くの場合、このメソッドは辞書の各キーを繰り返し処理するために使用されます。

example_dict = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}


for k in example_dict.keys():
  print(k)


これは example_dict の各キーを別々の行で表示します。

Company
model
year


結論

Pythonの辞書に関する本ガイドはこれで終わりです。この辞書はデータをキーと値のペアで保存します。キーはアイテムの識別子として機能し、値はアイテムの値です。Python辞書には、データの検索や操作のために適用できるさまざまなメソッドが付属しています。この記事では、Python辞書の作成、変更、削除の方法と、最も一般的に使用される辞書のメソッドを紹介しました。

タイトルとURLをコピーしました