【徹底解説】 辞書(ディクショナリ)型の使い方

1. 概要

Pythonでは、値をまとめて使用するデータ構造として辞書(ディクショナリ)型があります。

辞書の使い方について紹介していきます。

2. 辞書の基本操作

2.1. 辞書の作り方

辞書を作るにはキー : 値のペアをカンマで区切って使います。

test = {
    'A': 1,
    'B': 2,
    'C': 3
}

print(test)
# Output
{'A': 1, 'B': 2, 'C': 3}

空の辞書を作るには{ }を使います。

test = {}

print(test)
# Output
{}

別の作り方としてdict()関数で空の辞書を作ることもできます。

test = dict()

print(test)
# Output
{}

2.2. キーによる値の取得

辞書に格納されているキーを指定すれば、値を取得することができます。

test = {
    'A': 1,
    'B': 2,
    'C': 3
}

print(test)

print(test['A'])
print(test['B'])
print(test['C'])
# Output
{'A': 1, 'B': 2, 'C': 3}
1
2
3

辞書内に存在しないキーを指定すると、KeyErrroが返されます。

test = {
    'A': 1,
    'B': 2,
    'C': 3
}

print(test['D'])
# Output
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'C'

2.3. キーによる要素の追加・変更・削除

辞書に要素を追加するには、新しいキーを指定して値を代入します。

test = {
    'A': 1,
    'B': 2,
}

# 変更前
print(test)

test['C'] = 3

# 変更後
print(test)
# Output
{'A': 1, 'B': 2}
{'A': 1, 'B': 2, 'C': 3}

辞書の要素を変更するには、既存のキーを指定して新しい値を代入します。

test = {
    'A': 1,
    'B': 2,
    'C': 3,
}

# 変更前
print(test)

test['C'] = 99

# 変更後
print(test)
# Output
{'A': 1, 'B': 2, 'C': 3}
{'A': 1, 'B': 2, 'C': 99}

辞書の要素を削除するには、キーを指定してdel()関数を使います。

test = {
    'A': 1,
    'B': 2,
    'C': 3,
}

# 変更前
print(test)

del test['C']

# 変更後
print(test)
# Output
{'A': 1, 'B': 2, 'C': 3}
{'A': 1, 'B': 2}

2.4. 辞書の結合

二つの辞書を結合するにはupdate()関数を使います。

test_1 = {
    'A': 1,
    'B': 2,
}

test_2 = {
    'C': 3,
    'D': 4
}

# 変更前
print(test_1)
print(test_2)

test_1.update(test_2)

# 変更後
print(test_1)
# Output
{'A': 1, 'B': 2}
{'C': 3, 'D': 4}
{'A': 1, 'B': 2, 'C': 3, 'D': 4}

もし、結合する辞書同士に同じキーが存在した場合、update()関数の( )内に指定した辞書が優先されます。

test_1 = {
    'A': 1,
    'B': 2,
}

test_2 = {
    'B': 3,
    'D': 4
}

# 変更前
print(test_1)
print(test_2)

test_1.update(test_2)

# 変更後
print(test_1)
# Output
{'A': 1, 'B': 2}
{'B': 3, 'D': 4}
{'A': 1, 'B': 3, 'D': 4}



3. 辞書の各メソッド解説

他にも辞書に関するメソッドはあります。

それらを紹介していきます。

3.1. get

キーが辞書内にあれば値を返し、なければデフォルトで指定した値を返します。

デフォルトをしない場合は、Noneを返します。

test = {
    'A': 1,
    'B': 2,
    'C': 3,
}

print(test)

# キーが存在する場合
print(test.get('A', 99))

# キーが存在しない場合
print(test.get('D', 99))

# デフォルト値を指定しなかった場合
print(test.get('D'))
# Output
{'A': 1, 'B': 2, 'C': 3}
1
99
None

3.2. pop

キーが辞書に存在すれば値を返した後、辞書から取り出した値を削除します。

test = {
    'A': 1,
    'B': 2,
    'C': 3,
}

print(test)

print(test.pop('A'))

print(test)
# Output
{'A': 1, 'B': 2, 'C': 3}
1
{'B': 2, 'C': 3}

3.3. setdefault

キーが辞書に存在すれば格納されている値を返し、キーが辞書に存在しない場合は値を代入します。

test = {
    'A': 1,
    'B': 2,
    'C': 3,
}

print(test)

# キーが存在する場合
print(test.setdefault('A', 99))

# キーが存在しな場合
print(test.setdefault('D', 99))

print(test)
# Output
{'A': 1, 'B': 2, 'C': 3}
1
99
{'A': 1, 'B': 2, 'C': 3, 'D': 99}

3.4. clear

辞書の中のすべての要素を削除することができます。

test = {
    'A': 1,
    'B': 2,
    'C': 3,
}

# 変更前
print(test)

test.clear()

# 変更後
print(test)
# Output
{'A': 1, 'B': 2, 'C': 3}
{}

4. 辞書の応用編

辞書には他にもいろいろな使い方があります。

それらを一部ですが紹介していきます。

4.1. 全てのキーの取得

全てのキーを取得するにはkeys()関数を使います。

test = {
    'A': 1,
    'B': 2,
    'C': 3,
}

print(test)

print(test.keys())
# Output
{'A': 1, 'B': 2, 'C': 3}
dict_keys(['A', 'B', 'C'])

4.2. 全ての値の取得

全ての値を取得するにはvalues()関数を使います。

test = {
    'A': 1,
    'B': 2,
    'C': 3,
}

print(test)

print(test.values())
# Output
{'A': 1, 'B': 2, 'C': 3}
dict_values([1, 2, 3])

4.3. 全てのキーと値のペアの取得

全てのキーと値のペアを取得するには、items()関数を使います。

test = {
    'A': 1,
    'B': 2,
    'C': 3,
}

print(test)

print(test.items())
# Output
{'A': 1, 'B': 2, 'C': 3}
dict_items([('A', 1), ('B', 2), ('C', 3)])

4.4. inを使った値の有無の判定

指定したキーが辞書内に含まれるかどうかを判定します。

存在すればTrueが返り、存在しなければFalseが返されます。

test = {
    'A': 1,
    'B': 2,
    'C': 3,
}

print(test)

# 存在するパターン
print('A' in test)

# 存在しないパターン
print('D' in test)
# Output
{'A': 1, 'B': 2, 'C': 3}
True
False