Pythonでは、辞書のキーに列挙型(Enum)を使用することが推奨されています。以下にその理由と使用例を示します。
列挙型(Enum)を辞書のキーとして使用する理由
-
イミュータブルなオブジェクトであるため: Pythonの辞書のキーはイミュータブル(変更不可のオブジェクト)であることが要件です。そのため、イミュータブルオブジェクトであるenumは辞書のキーに活用することができます。
-
辞書のキーを効率良く管理できるため: 列挙型を活用することで、Pythonの辞書のキーに型アノテーションを付与することができます。これにより、辞書のキー候補を予め把握することができます。
-
列挙型のvalue値の変更に柔軟に対応できるため: 列挙型のvalue値が変更になった場合でも、柔軟に辞書の活用ができることもおすすめの点です。
使用例
以下に、Pythonで列挙型を辞書のキーとして使用する例を示します。
import enum
import typing
# 辞書のキー名を管理するための列挙型を定義
class Member(enum.Enum):
TARO = enum.auto()
JIRO = enum.auto()
GORO = enum.auto()
# 辞書のキーが`Member`であることを型アノテーション
member_age: typing.Dict[Member, int] = {}
# `Member`クラスを辞書のキーに
member_age[Member.TARO] = 20
member_age[Member.JIRO] = 25
print(member_age.items())
# Output: dict_items([(<Member.TARO: 1>, 20), (<Member.JIRO: 2>, 25)])
このように、Pythonの辞書と列挙型を組み合わせて使用することで、コードの可読性と保守性を向上させることができます。