辞書¶
辞書とはキー
と、対応する値
を値を持つデータです。
以下の決まりがあります。
キーと値で1つの要素
各要素の間には、順序がない
要素を追加、削除できる
キーを利用して、値を変更できる
辞書オブジェクトは、{キー
: 値
, キー
: 値
, ...}のようにキー
と値
をコロン(:
)で結合し、カンマ(,
)で複数の要素を区切ります。要素を持たない空の辞書は{}
で表します。
作成¶
空の辞書を作るには辞書名 = {}
と書きます。
辞書に値を追加するには辞書名[キー] = 値
と書きます。
sample_dict = {} # 空の辞書
# 追加
sample_dict['apple'] = 'りんご'
sample_dict['orange'] = 'オレンジ'
sample_dict['banana'] = 'バナナ'
# 表示
print(sample_dict)
実行結果
:
{'orange': 'オレンジ', 'banana': 'バナナ', 'apple': 'りんご'}
実業務で辞書をそのままprint()
することはありませんが、学習中に辞書の状態を確認するには便利です。追加順に並ばないことを覚えておきましょう。
値を指定した辞書の作成¶
初めからキー
と値
のペアを指定して辞書を作成できます。キー: 値
のペアを{}
の中にカンマ(,
)で区切って並べます。
辞書名[キー] = 値
を利用し、データを持っている辞書に要素を追加できます。
# 作成
sample_dict = {'apple': 'りんご', 'orange': 'オレンジ', 'banana': 'バナナ'}
# 表示
print(sample_dict) # -> {'orange': 'オレンジ', 'banana': 'バナナ', 'apple': 'りんご'}
# 追加
sample_dict['peach'] = 'もも'
# 表示
print(sample_dict) # -> {'orange': 'オレンジ', 'banana': 'バナナ', 'apple': 'りんご', 'peach': 'もも'}
参照¶
辞書名[キー]
でキーとペアになっている値を参照できます。
print(sample_dict['apple']) # -> りんご
print(sample_dict['orange']) # -> オレンジ
辞書に指定したキーが存在しない場合、KeyErrorが発生します。
詳しくは、KeyErrorを参照ください。
keys()¶
辞書.keys()
は辞書に存在するキーの一覧を返します。dict_keys()
で囲まれていますが、リストと同じようにfor
文などで利用できます。
list()
で囲めば、リストにも変換できます。
sample_dict = {'apple': 'りんご', 'orange': 'オレンジ', 'banana': 'バナナ'}
keys = list(sample_dict.keys())
print(keys)
for key in sample_dict.keys():
print(key)
実行結果
:
['orange', 'apple', 'banana']
apple
banana
orange
values()¶
辞書.values()
は辞書に存在する値の一覧を返します。dict_values()
で囲まれていますが、リストと同じようにfor
文などで利用できます。
list()
で囲めば、リストにも変換できます。
sample_dict = {'apple': 'りんご', 'orange': 'オレンジ', 'banana': 'バナナ'}
values = list(sample_dict.values())
print(values)
for value in sample_dict.values():
print(value)
実行結果
:
['りんご', 'バナナ', 'オレンジ']
りんご
バナナ
オレンジ
items()¶
辞書.items()
は辞書のキーと値の(key, value)
対のリストを返します。
dict_items()
で囲まれていますが、リストと同じようにfor
文などで利用できます。
list()
で囲めば、リストにも変換できます。
for
文でfor
の後ろに変数をカンマ区切りで2つ指定すると、辞書のキーが1番目、値が2番目の変数に代入されます。
sample_dict = {'apple': 'りんご', 'orange': 'オレンジ', 'banana': 'バナナ'}
items = list(sample_dict.items())
print(items)
for key, item in sample_dict.items():
print(key, item)
実行結果
:
[('apple', 'りんご'), ('banana', 'バナナ'), ('orange', 'オレンジ')]
apple りんご
banana バナナ
orange オレンジ
dict.keys()
、 dict.values()
、 dict.items()
によって返されるオブジェクトはリストではありません。
dict_keys
オブジェクト、 dict_values
オブジェクト、 dict_items
オブジェクトを返します。
今は「リストのようなもので、 list()
を使えば、リストに変換できるオブジェクト」と考えれば十分です。
詳しく知りたい方は、 4.10.1. 辞書ビューオブジェクト を参照ください。
存在確認¶
in
演算子を利用し、辞書に特定のキー
を持つペアが存在するか確認できます。
if 'apple' in sample_dict:
print('存在')
辞書.get(キー, キーがない場合の値)
も利用できます。辞書に指定したキーが存在すれば、キーに紐付いた値を返し、存在しない場合は2番目の引数の値が返ります。
sample_dict = {'apple': 'りんご', 'orange': 'オレンジ', 'banana': 'バナナ'}
print(sample_dict.get('peach', '在庫なし'))
更新¶
辞書名[キー]
を利用して、値の更新が行なえます。
sample_dict = {'apple': 'りんご', 'orange': 'オレンジ', 'banana': 'バナナ'}
print(sample_dict) # -> {'orange': 'オレンジ', 'banana': 'バナナ', 'apple': 'りんご'}
# 更新
sample_dict['orange'] = 'みかん'
print(sample_dict) # -> {'orange': 'みかん', 'banana': 'バナナ', 'apple': 'りんご'}
削除¶
pop()
か、del
で指定したキーのペアを削除します。
a = sample_dict.pop('apple')
print(sample_dict) # -> {'peach': 'もも', 'orange': 'みかん', 'banana': 'バナナ'}
print(a) # -> りんご
del sample_dict['peach']
print(sample_dict) # -> {'orange': 'みかん', 'banana': 'バナナ'}
全削除¶
要素をすべて削除したい場合は、clear()
か、{}
の再代入を利用する。
sample_dict.clear()
print(sample_dict) # -> {}
sample_dict = {}
print(sample_dict) # -> {}
公式ドキュメント¶
詳しくは 辞書型 を参照ください。