Co_*_*_42 23 python random enums python-3.4
我想在Enum上使用random.choice.
我试过了 :
class Foo(Enum):
a = 0
b = 1
c = 2
bar = random.choice(Foo)
Run Code Online (Sandbox Code Playgroud)
但是这段代码不起作用,我怎么能这样做?
Mar*_*ers 46
一个Enum不是一个序列,所以你不能将它传递给它random.choice(),它试图选择0和之间的索引len(Foo).像字典一样,索引访问一个Enum代替期望枚举名称传入,所以Foo[<integer>]这里失败了KeyError.
您可以先将其强制转换为列表:
bar = random.choice(list(Foo))
Run Code Online (Sandbox Code Playgroud)
这工作,因为Enum 不支持迭代.
演示:
>>> from enum import Enum
>>> import random
>>> class Foo(Enum):
... a = 0
... b = 1
... c = 2
...
>>> random.choice(list(Foo))
<Foo.a: 0>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6521 次 |
| 最近记录: |