小编Jus*_*wel的帖子

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

我正在与 Python 枚举作斗争。我创建了一个包含各种字段的枚举类:

class Animal(Enum):
   DOG = "doggy"
   CAT = "cute cat"
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过值访问这个枚举,即通过传递Animal("doggy")I will have Animal.DOG。然而,我想实现相同的目标,但相反,假设我已经"DOG"并且用它来查找"doggy".

例子:

str_to_animal_enum("DOG") = Animal.DOG
Run Code Online (Sandbox Code Playgroud)

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

像这样:

def __init__(cls, name):
   for enum in all_enums:
      if enum.name == name:
         return enum
Run Code Online (Sandbox Code Playgroud)

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

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

python enums

10
推荐指数
1
解决办法
1万
查看次数

标签 统计

enums ×1

python ×1