辞書

辞書とはキーと、対応するを値を持つデータです。

辞書1

以下の決まりがあります。

  • キーで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': 'もも'}

実行結果:

{'orange': 'オレンジ', 'banana': 'バナナ', 'apple': 'りんご'}

参照

辞書名[キー]でキーとペアになっているを参照できます。

print(sample_dict['apple'])  # -> りんご
print(sample_dict['orange'])  # -> オレンジ

辞書に指定したキーが存在しない場合、KeyErrorが発生します。

KeyError

詳しくは、KeyErroを参照ください。

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)  # -> {}

公式ドキュメント

詳しくは 辞書型 を参照ください。