python 3.4:在Enum上的random.choice

时间:2014-06-16 12:15:16

标签: python random enums python-3.4

我想在Enum上使用random.choice。

我试过了:

class Foo(Enum):
    a = 0
    b = 1
    c = 2
bar = random.choice(Foo)

但是这段代码不起作用,我怎么能这样做?

1 个答案:

答案 0 :(得分:36)

Enum不是序列,因此您无法将其传递给random.choice()len(Foo)会尝试选择0到Enum之间的索引。与字典一样,对Foo[<integer>]的索引访问需要传入枚举名称,因此KeyErrorbar = 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}}