【问题标题】:Get a list of values from a list of enumerations从枚举列表中获取值列表
【发布时间】:2022-11-23 18:54:50
【问题描述】:

让我们假设我们有一个枚举类:

class MyEnum(Enum):
    foo = 1
    bar = 2

如何从上面的枚举列表中获取值列表[1, 1, 2]

mylist = [MyEnum.foo, MyEnum.foo, MyEnum.bar]

我知道可以使用列表理解创建一个新列表,但我想知道是否存在更自然、更直接的方法来获得相同的输出。

【问题讨论】:

  • 您对“更自然”和“直接”的定义是什么?恐怕我不明白你的要求。你试图解决的问题到底是什么?

标签: python


【解决方案1】:

我只能考虑一张地图:

myvaluelist = list(map(lambda _ : _.value, mylist))

但是我认为它比列表理解更不“自然”:

myvaluelist = [_.value for _ in mylist]

【讨论】:

    【解决方案2】:

    我们可以通过.name.value访问Enum类的namevalue。所以一个简单的列表理解可以解决你的问题。

    class MyEnum(Enum):
        foo = 1
        bar = 2
    mylist = [MyEnum.foo, MyEnum.foo, MyEnum.bar]
    my_enum_val_list = [i.value for i in mylist]
    

    【讨论】:

    • 谢谢 hide1nbush。我的问题涉及更直接的解决方案的存在,例如来自 Python 中枚举的实现。
    • @Aleph 恐怕不会。 Enum实际上是由一个dict存储的,如果你想访问键或值,这是同样的故事。
    • 非常感谢,hide1nbush!
    • @Aleph 你能取悦你的场景吗?为什么要获取Enum的值,也许还有其他解决方案。
    • 当然,我想从函数 y = fun(mylist) 获得输出,但它确实接受我的枚举列表作为输入。该函数是本页中名为“预测”的函数:scikit-learn.org/stable/modules/generated/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 2011-07-16
    • 2018-01-17
    相关资源
    最近更新 更多