#辞書(dictionary)とは
辞書(dictionary)型とは、{}の中にkeyとvalueの組み合わせが含まれているデータのことです。
{'キー1':'値1','キー2':'値2','キー3':'値3'}
#辞書型オブジェクトの作り方
括弧{}で囲んだ中に要素をカンマ「,]で区切って記述します。
要素はキーと値のペアで構成され,キーと値はコロン「:」で区切って記述します。
x = {'名前':'山田', '年齢':25}
上記の例ではキーが「名前」で値が「山田」とキーが「年齢」で値が[25」の辞書型オブジェクトを作成しています。
#要素を参照する方法
辞書型オブジェクトは、リスト型のように多くの要素を持つことが出来ます。
要素を取り出すためにはキーを使い、値を取得します。
x = {'名前':'山田', '年齢':25}
y = x['名前']
print(y)
#山田
注意したいのは、要素へのアクセスの際は{}ではなく[]を使うということです。
上記だと、キーが存在しないエラーになってしまいます。
キーが存在しない場合に任意の値を返すにはget関数を使います。
x = {'名前':'山田', '年齢':25}
y = x.get('性別','男')
print(y)
#男
#要素の追加
辞書型オブジェクトに、要素を追加してみましょう。
下記のコードでは、キーが「性別」で値が「男」の要素追加しています。
x = {'名前':'山田', '年齢':25}
x['性別'] = '男'
print(x)
#{'名前':'山田', '年齢':25, '性別':'男'}
#要素の削除
要素を削除する場合、pop関数もしくはclear関数を使います。
個別に要素を削除するには、pop関数を使います。
x = {'名前':'山田', '年齢':25}
x.pop('名前') #pop('要素のキー')
print(x)
#{'年齢':25}
全ての要素を削除するには、clear関数を使います。
x = {'名前':'山田', '年齢':25}
x.clear()
print(x)
#{}
#要素を検索する
要素を検索する方法として、下記の3パターンが挙げられます。
- キーで検索
- 値で検索
- キーと値の両方で検索する
それぞれの検索方法を説明していきます。
##辞書のキーの存在を確認、取得(検索): in演算子
辞書に対してキーの存在を判定するにはin演算子を使います.
ちなみにPython2では使えたhas_key関数は,Python3では無くなっています。
x = {'名前':'山田', '年齢':25}
print('名前' in x)
#True
print('キー' in x)
#False
辞書の値の存在を確認、取得(検索): in演算子, values関数
辞書に特定の値が含まれているかどうかを判定するには、in演算子と
辞書の全ての値のみを配列で返すvalues関数を使います。
x = {'名前':'山田', '年齢':25}
print('山田' in x.values())
#True
print('名前' in x.values())
#False
辞書のキーと値の組み合わせで存在を確認、取得(検索): in演算子, items関数
辞書に特定のキーと値の組み合わせが含まれているかどうかを判定するには、
in演算子と辞書の全てのキーと値の組み合わせを返すitems関数を使います。
x = {'名前':'山田', '年齢':25}
print(('名前','山田') in x.items())
#True
print(('名前','佐藤') in x.items())
#False
For文を使っての繰り返し処理
辞書内包表記
辞書もリスト(list)と同じように内包表記が使えます。
基本的な書き方は下記になります。
処理対象(配列などの部分)が、配列(リスト)の場合
x = { str(i):i for i in 配列}
上記は、下記の処理を内包表記を使って書いたものになります。
例)
list = ['a','b','c']
x = {}
for i in list:
x[str(i)] = i
print(x)
#{'a':'a', 'b':'b', 'c':'c'}
処理対象(配列などの部分)が、辞書の場合
x = { k:v for k,v in 辞書.items()}
例)
x = {'名前1':'山田', '年齢1':25,'名前2':'佐藤', '年齢2':20}
y = {}
for k,v in x.items():
y[k] = v
print(y)
#{'名前1': '山田', '年齢1': 25, '名前2': '佐藤', '年齢2': 20}
条件を満たす辞書の要素を抽出して、処理を適用するには
下記のようにします.
x = {'名前1':'山田', '年齢1':25,'名前2':'佐藤', '年齢2':20}
y = { k:v for k,v in x.items() if '名前' in k }
print(y)
#{'名前1': '山田', '名前2': '佐藤'}
#まとめ
辞書の扱い方は、上記のほかにもいろいろとあります。
公式ドキュメントなども確認してみ下さい。
次回は、文字列操作について解説していきます!