通过字符串Python中的枚举名称查找枚举值



我很难使用Python枚举。我创建了一个包含各种字段的枚举类:

class Animal(Enum):
DOG = "doggy"
CAT = "cute cat"

我知道我可以用值访问这个枚举,即通过传递Animal("doggy"),我将拥有Animal.DOG。然而,我想实现相同但相反的方式,假设我有"DOG",我用它来找到"doggy"

示例:

str_to_animal_enum("DOG") = Animal.DOG

我想我可以重写Enum类的init函数,以检查我们作为参数放置的字符串名称在Enum名称中是否有表示符,如果是,则我们有匹配项。

像这样的:

def __init__(cls, name):
for enum in all_enums:
if enum.name == name:
return enum

但是这个解决方案看起来计算量很大。假设我有100个名称要查找,对于每个名称,我们必须在最坏的情况下进行N次迭代,其中N是枚举类中的枚举数。

我认为应该有更好的东西,但我不知道是什么。你对如何实施有什么想法吗?谢谢:(

根据手册:

>>> Animal.DOG.value
'doggy'
>>> Animal.DOG.name
'DOG'
>>> # For more programmatic access, with just the enum member name as a string:
>>> Animal['DOG'].value
'doggy'