我想在Enum上使用random.choice。
我试过了:
class Foo(Enum):
a = 0
b = 1
c = 2
bar = random.choice(Foo)
但是这段代码不起作用,我怎么能这样做?
答案 0 :(得分:36)
Enum
不是序列,因此您无法将其传递给random.choice()
,len(Foo)
会尝试选择0到Enum
之间的索引。与字典一样,对Foo[<integer>]
的索引访问需要传入枚举名称,因此KeyError
在bar = random.choice(list(Foo))
失败。
您可以先将其投放到列表中:
Enum
这可行,因为>>> from enum import Enum
>>> import random
>>> class Foo(Enum):
... a = 0
... b = 1
... c = 2
...
>>> random.choice(list(Foo))
<Foo.a: 0>
does support iteration。
演示:
{{1}}