在枚举上使用random.choice
我想在一个Enum
(枚举)上使用random.choice
这个功能。
我试过这样做:
class Foo(Enum):
a = 0
b = 1
c = 2
bar = random.choice(Foo)
但是这段代码出现了KeyError
的错误。那我该怎么随机选择一个Enum
的成员呢?
1 个回答
130
一个 Enum
(枚举)并不是一个 序列,所以你不能把它传给 random.choice()
。这个函数是想在 0 到 len(Foo)
之间随机选择一个索引。就像字典一样,访问 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>