ディクショナリー

 リスト配列は要素をインデックス番号でアクセスします。ディクショナリーは、キーワードとデータを関連付けて保存します。辞書からキーワードで目的のものを探し出すように、キーワードで検索してデータを取り出したり、格納したりする配列をディクショナリーと呼びます。リスト配列は整数値で要素にアクセスしますが、ディクショナリーは、文字列で要素にアクセスします。

ディクショナリーのイメージ
ディクショナリーのイメージ

 ここでは、ディクショナリーを操作するいくつかの方法を見てみましょう。

■ 空のディクショナリーの作成

 要素が空のディクショナリーは次のように用意します。

空要素のディクショナリー作成の書式
ディクショナリー名 = {}

例:
 products = {}

○ ファイル

 Chapter2プロジェクトに次のファイルを追加してください。

ファイルの種類 空のPythonファイル
ファイル名 dicttest1.py

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. #ディクショナリーを用意する
  2. products = {}
  3. #ディクショナリーの内容を表示する
  4. print(products)

○ 実行結果

{}

○ 解説

 2行目で、{}を使ってリスト配列を指定しています。5行目で、リスト配列の中身を表示しています。今回は要素が空なので、「{}」と表示されます。


■ ディクショナリーの初期化

 ディクショナリーは次のように初期化します。

ディクショナリー初期化の書式
ディクショナリー名 = {'キー1' : 値1, 'キー2' : 値2, }

例:
 products = {'productname' : 'ばなな', 'price' : 100}

○ ファイル

 Chapter2プロジェクトに次のファイルを追加してください。

ファイルの種類 空のPythonファイル
ファイル名 dicttest2.py

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. #ディクショナリーを用意する
  2. products = {'productname' : 'ばなな', 'price' : 100}
  3. #ディクショナリーの内容を表示する
  4. print(products)

○ 実行結果

{'productname': 'ばなな', 'price': 100}

○ 解説

 2行目で、ディクショナリーを初期化しています。次の図のようにキー「productname」に「ばなな」が、キー「price」に「100」が格納されたディクショナリーが用意されます。

ディクショナリーの初期化
ディクショナリーの初期化


■ ディクショナリーの要素に代入

 ディクショナリーの要素は次のように指定してデータを代入したり、参照したりすることができます。

ディクショナリー代入の書式
ディクショナリー名[キー] =

例:
 products['price'] = 150

○ ファイル

 Chapter2プロジェクトに次のファイルを追加してください。

ファイルの種類 空のPythonファイル
ファイル名 dicttest3.py

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. #ディクショナリーを用意する
  2. products = {'productname' : 'ばなな', 'price' : 100}
  3. #ディクショナリーの内容を表示する
  4. print('代入前のディクショナリー{}'.format(products))
  5. #ディクショナリーにデータを代入する
  6. products['price'] = 150
  7. products['quantity'] = 3
  8. #リスト配列の内容を表示する
  9. print('代入後のディクショナリー:{}'.format(products))

○ 実行結果

代入前のディクショナリー{'productname': 'ばなな', 'price': 100}
代入後のディクショナリー:{'productname': 'ばなな', 'price': 150, 'quantity': 3}

○ 解説

 8行目で、productsディクショナリーのキー「price」の要素に「150」を代入しています。9行目のように、products [‘quantity’]など、用意されていない他のキーの要素に代入すると、その要素が作成されされます。また、存在しないキーの要素を参照しようとすると、エラーになります。

ディクショナリーに代入
ディクショナリーに代入


■ ディクショナリーの長さ

 ディクショナリーの要素数がいくつあるかを調べることができます。

ディクショナリーの要素数取得の書式
len(ディクショナリー名)

例:
 len(products)

○ ファイル

 Chapter2プロジェクトに次のファイルを追加してください。

ファイルの種類 空のPythonファイル
ファイル名 dictlengthtest.py

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. #ディクショナリーを用意する
  2. products = {'productname' : 'ばなな', 'price' : 100}
  3. #ディクショナリーの要素数を表示する
  4. print('要素数:{}'.format(len(products)))
  5. #ディクショナリーの内容を表示する
  6. print(products)

○ 実行結果

要素数:2
{'productname': 'ばなな', 'price': 100}

○ 解説

 5行目で、ディクショナリーの要素数を表示しています。今回は、「2」と表示されます。


■ ディクショナリーに別のディクショナリーを結合

 ディクショナリーに別のディクショナリーの要素を結合するには、「update」メソッドを使います。

ディクショナリー結合の書式
ディクショナリー名.update(ディクショナリー名)

例:
 products.update(producing)

○ ファイル

 Chapter2プロジェクトに次のファイルを追加してください。

ファイルの種類 空のPythonファイル
ファイル名 dictupdatetest.py

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. #ディクショナリーを用意する
  2. products = {'productname' : 'ばなな', 'price' : 100}
  3. producing = {'area' : '愛知', 'date' : '2020/06/16', 'productname' : 'めろん'}
  4. #ディクショナリーの内容を表示する
  5. print('結合前のディクショナリー:{}'.format(products))
  6. #ディクショナリーを結合する
  7. products.update(producing)
  8. #ディクショナリーの内容を表示する
  9. print('結合後のディクショナリー:{}'.format(products))

○ 実行結果

結合前のディクショナリー:{'productname': 'ばなな', 'price': 100}
結合後のディクショナリー:{'productname': 'めろん', 'price': 100, 'area': '愛知', 'date': '2020/06/16'}

○ 解説

 2行目で、2個の要素を持つディクショナリーを用意しています。3行目で、3個の要素を持つリスト配列を用意しています。9行目で、productsディクショナリーとproducingディクショナリーを結合しています。その際、結合するディクショナリーに同じキーが存在する場合、結合するディクショナリーのキーのデータで更新されます。

ディクショナリーを結合
ディクショナリーを結合


■ ディクショナリーの要素を削除

 ディクショナリーの要素を削除するには、「del」文を使います。

ディクショナリー要素削除の書式
del ディクショナリー名[キー]

例:
 del products['price']

○ ファイル

 Chapter2プロジェクトに次のファイルを追加してください。

ファイルの種類 空のPythonファイル
ファイル名 distdeletetest.py

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. #ディクショナリーを用意する
  2. products = {'productname' : 'ばなな', 'price' : 100}
  3. #ディクショナリーの内容を表示する
  4. print('削除前のディクショナリー{}'.format(products))
  5. #要素を削除する
  6. del products['price']
  7. #ディクショナリーの内容を表示する
  8. print('削除後のディクショナリー{}'.format(products))

○ 実行結果

削除前のディクショナリー{'productname': 'ばなな', 'price': 100}
削除後のディクショナリー{'productname': 'ばなな'}

○ 解説

 8行目で、productsディクショナリーのpriceキーの要素を削除しています。結果としてpriceキーの要素が削除されます。

ディクショナリーの要素の削除
ディクショナリーの要素の削除


■ ディクショナリーの全要素を削除

 ディクショナリーの全要素を削除するには、「clear」メソッドを使います。

ディクショナリー全要素削除の書式
ディクショナリー名.clear()

例:
 products.clear()

○ ファイル

 Chapter2プロジェクトに次のファイルを追加してください。

ファイルの種類 空のPythonファイル
ファイル名 dictcleartest.py

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. #ディクショナリーを用意する
  2. products = {'productname' : 'ばなな', 'price' : 100}
  3. #ディクショナリーの内容を表示する
  4. print('全要素削除前のディクショナリー{}'.format(products))
  5. #全要素を削除する
  6. products.clear()
  7. #ディクショナリーの内容を表示する
  8. print('全要素削除後のディクショナリー{}'.format(products))

○ 実行結果

全要素削除前のディクショナリー{'productname': 'ばなな', 'price': 100}
全要素削除後のディクショナリー{}

○ 解説

 8行目で、clearメソッドを指定してproductsディクショナリーの全要素を削除しています。11行目で、ディクショナリーの全要素が削除されていることを確認できます。


■ ディクショナリーから要素の値を取得後削除

 ディクショナリーの指定した要素を取得して削除するには、「pop」メソッドを使います。

ディクショナリー要素取得後削除の書式
ディクショナリー.pop(キー)

例:
 p = products.pop('price')

○ ファイル

 Chapter2プロジェクトに次のファイルを追加してください。

ファイルの種類 空のPythonファイル
ファイル名 dictpoptest.py

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. #ディクショナリーを用意する
  2. products = {'productname' : 'ばなな', 'price' : 100}
  3. #ディクショナリーの内容を表示する
  4. print('削除前のディクショナリー{}'.format(products))
  5. #要素を取得して削除する
  6. p = products.pop('price')
  7. #ディクショナリーの内容を表示する
  8. print("取り出した要素:{}".format(p))
  9. print("削除後のディクショナリー:{}".format(products))

○ 実行結果

削除前のディクショナリー{'productname': 'ばなな', 'price': 100}
取り出した要素:100
削除後のディクショナリー:{'productname': 'ばなな'}

○ 解説

 8行目で、popメソッドを使って要素を取り出しています。今回はpriceキーの要素が取り出され、その要素はディクショナリーから削除されます。11行目では、取り出した要素を確認しています。「100」が表示されます。12行目では、削除後のディクショナリーを確認しています。「100」が取り除かれた状態のディクショナリーを確認することができます。

ディクショナリーの要素を取り出して削除
ディクショナリーの要素を取り出して削除


■ ディクショナリーから要素のキーと値を取得後削除

 ディクショナリーから要素のキーと値を取得して削除するには、「popitem」メソッドを使います。どの要素化は指定できません。

ディクショナリーキー・値取得後削除の書式
ディクショナリー名.popitem()

例:
 p = products.popitem()

○ ファイル

 Chapter2プロジェクトに次のファイルを追加してください。

ファイルの種類 空のPythonファイル
ファイル名 dictpopitemtest.py

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. #ディクショナリーを用意する
  2. products = {'productname' : 'ばなな', 'price' : 100}
  3. #ディクショナリーの内容を表示する
  4. print('削除前のディクショナリー{}'.format(products))
  5. #要素を取得して削除する
  6. p = products.popitem()
  7. #ディクショナリーの内容を表示する
  8. print("取り出した要素:{}".format(p))
  9. print("削除後のディクショナリー:{}".format(products))

○ 実行結果

削除前のディクショナリー{'productname': 'ばなな', 'price': 100}
取り出した要素:('price', 100)
削除後のディクショナリー:{'productname': 'ばなな'}

○ 解説

 8行目で、popitemメソッドを使って要素を取り出しています。今回はpriceキーの要素のキーと値のセットが取り出され、その要素はディクショナリーから削除されます。11行目では、取り出した要素を確認しています。「('price', 100)」が表示されます。12行目では、削除後のディクショナリーを確認しています。「100」が取り除かれた状態のディクショナリーを確認することができます。

ディクショナリーの要素を取り出して削除
ディクショナリーの要素を取り出して削除

 popitemメソッドを呼び出すたびに、ディクショナリーから要素を取り出します。取り出す要素がない場合はエラーとなります。


■ ディクショナリーのキーのリストを取得

 ディクショナリーに存在するキーの一覧を取得するには、「keys」メソッドを使います。

ディクショナリーキー一覧取得の書式
ディクショナリー名.keys()

例:
 keys = products.keys()

○ ファイル

 Chapter2プロジェクトに次のファイルを追加してください。

ファイルの種類 空のPythonファイル
ファイル名 dictkeystest.py

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. #ディクショナリーを用意する
  2. products = {'productname' : 'ばなな', 'price' : 100}
  3. #キー一覧を取得して削除する
  4. keys = products.keys()
  5. #取得した内容を表示する
  6. print("キー一覧:{}".format(keys))

○ 実行結果

キー一覧:dict_keys(['productname', 'price'])

○ 解説

 5行目で、keysメソッドを使ってキー一覧を取得しています。結果として「dict_keys」オブジェクトが取得できます。このオブジェクトの中にキー一覧のデータがセットされています。繰り返し処理などを使ってデータを一つずつ取り出して活用します。


■ ディクショナリーの値のリストを取得

 ディクショナリーの要素に格納されている値の一覧を取得するには、「values」メソッドを使います。

ディクショナリー値一覧取得の書式
ディクショナリー名.values()

例:
 values = products.values()

○ ファイル

 Chapter2プロジェクトに次のファイルを追加してください。

ファイルの種類 空のPythonファイル
ファイル名 dictvaluestest.py

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. #ディクショナリーを用意する
  2. products = {'productname' : 'ばなな', 'price' : 100}
  3. #値一覧を取得して削除する
  4. values = products.values()
  5. #取得した内容を表示する
  6. print("値一覧:{}".format(values))

○ 実行結果

値一覧:dict_values(['ばなな', 100])

○ 解説

 5行目で、valuesメソッドを使って値一覧を取得しています。結果として「dict_values」オブジェクトが取得できます。このオブジェクトの中に値一覧のデータがセットされています。繰り返し処理などを使ってデータを一つずつ取り出して活用します。


■ ディクショナリーのキーと値のペアを取得

 ディクショナリーの要素に格納されているキーと値の一覧を取得するには、「items」メソッドを使います。

ディクショナリーキー・値一覧取得の書式
ディクショナリー名.items()

例:
 items = products.items()

○ ファイル

 Chapter2プロジェクトに次のファイルを追加してください。

ファイルの種類 空のPythonファイル
ファイル名 dictitemstest.py

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. #ディクショナリーを用意する
  2. products = {'productname' : 'ばなな', 'price' : 100}
  3. #キーと値の一覧を取得して削除する
  4. items = products.items()
  5. #取得した内容を表示する
  6. print("データ一覧:{}".format(items))

○ 実行結果

データ一覧:dict_items([('productname', 'ばなな'), ('price', 100)])

○ 解説

 5行目で、itemsメソッドを使ってキーと値の一覧を取得しています。結果として「dict_items」オブジェクトが取得できます。このオブジェクトの中にキーと値のペアのデータがセットされています。繰り返し処理などを使ってデータを一つずつ取り出して活用します。


■ ディクショナリーに指定したキーが含まれるかを調査

 ディクショナリーに指定したキーを持つ要素が存在するかどうかを調べるには、「in」演算子を使います。見つかった場合は「True」を、見つからなかった場合は「False」を返します。

ディクショナリーキー検索の書式
キー名 in ディクショナリー名

例:
 'productname' in products

○ ファイル

 Chapter2プロジェクトに次のファイルを追加してください。

ファイルの種類 空のPythonファイル
ファイル名 dictsearchtest.py

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. #ディクショナリーを用意する
  2. products = {'productname' : 'ばなな', 'price' : 100}
  3. #キーを検索する
  4. print("productname ? {}".format('productname' in products))
  5. print("quantity ? {}".format('quantity' in products))
  6. print("quantity ? {}".format('quantity' not in products))

○ 実行結果

productname ? True
quantity ? False
quantity ? True

○ 解説

 5行目では、ディクショナリー内に「productname」キーが存在するかどうかを「in」演算子を指定して調べています。存在するので「True」が表示されます。6行目では、ディクショナリー内に「quantity」キーが存在するかどうかを調べています。存在しないので、「False」が表示されます。7行目では、ディクショナリー内に「quantity」キーが存在しないかどうかを「not in」演算子を指定して調べています。存在しないので「True」が表示されます。

前へ   次へ