1. ホーム
  2. python

[解決済み] PythonでintをEnumに変換する方法は?

2022-08-21 07:38:16

質問

新しいEnum機能(via バックポート enum34 を経由して) Python 2.7.6 で使用しています。

以下の定義がある場合、どのようにintを対応するEnumの値に変換することができますか?

from enum import Enum

class Fruit(Enum):
    Apple = 4
    Orange = 5
    Pear = 6

私は変換を行うために一連のifステートメントを手で作ることができることを知っていますが、変換するための簡単なpythonic方法はありますか?基本的に、私はenum値を返す関数ConvertIntToFruit(int)が欲しいです。

私の使用例は、私が各レコードをオブジェクトに読み込んでいるレコードのcsvファイルを持っていることです。 ファイル フィールドの 1 つは、列挙型を表す整数フィールドです。 オブジェクトに入力する際に、ファイルからその整数フィールドをオブジェクトの対応するEnum値に変換したいと思います。

どのように解決するのですか?

を「呼び出す」のです。 Enum クラスを呼び出します。

Fruit(5)

を回す 5Fruit.Orange :

>>> from enum import Enum
>>> class Fruit(Enum):
...     Apple = 4
...     Orange = 5
...     Pear = 6
... 
>>> Fruit(5)
<Fruit.Orange: 5>

からの 列挙メンバとその属性へのプログラムによるアクセス のセクションを参照してください。

列挙型のメンバにプログラムからアクセスするのが便利な場合があります。 プログラム的にアクセスするのが便利な場合があります (例. Color.red では対応できないような場合です。 ができないような場合です)。 Enum ではこのような にアクセスできるようになります。

>>> Color(1)
<Color.red: 1>
>>> Color(3)
<Color.blue: 3>

関連するメモ: という名前 を含む文字列の値をマッピングするには、サブスクリプションを使用します。

>>> s = 'Apple'
>>> Fruit[s]
<Fruit.Apple: 4>