首页 > 解决方案 > 将字符串与枚举进行比较的最有效方法是什么?

问题描述

我有以下枚举类:

class LabelEnum(str, Enum):
    ENUM_ONE = "Enum One"
    ENUM_TWO = "Enum Two"
    ENUM_THREE = "Enum Three"
    FOUR = "FOUR"
    FIVE = "FIVE"
    SIX = "SIX"

我想将一个字符串与这个枚举的所有成员进行比较,看看这个字符串是否存在于枚举类中。我可以通过以下代码段来做到这一点:

if string in LabelEnum.__members__:
    pass

但我想将字符串 ( string.lower()) 的小写字母与枚举成员的小写字母进行比较。我认为我不能以上述方式做到这一点。另一种方法是遍历成员,但这会减慢执行速度,我不希望这样。有什么方法可以在一行中比较这些的小写,并且比循环更有效?

标签: pythondjangostringenums

解决方案


只需创建一个“LabelEnumLower”列表,其中包含转换为较低的 LabelEnum 的成员:

LabelEnumLower = [s.lower() for s in LabelEnum.__members__]

现在你可以做if string in LabelEnumLower:


推荐阅读