[英]random.choice on Enum
I would like to use random.choice
on an Enum
.我想在
Enum
上使用random.choice
。
I tried:我试过:
class Foo(Enum):
a = 0
b = 1
c = 2
bar = random.choice(Foo)
But this code fails with a KeyError
.但是此代码失败并显示
KeyError
。 How can I choose a random member of Enum
?如何选择
Enum
的随机成员?
An Enum
is not a sequence , so you cannot pass it to random.choice()
, which tries to pick an index between 0 and len(Foo)
.一个
Enum
不是一个序列,所以你不能将它传递给random.choice()
,它试图在 0 和len(Foo)
之间选择一个索引。 Like a dictionary, index access to an Enum
instead expects enumeration names to be passed in, so Foo[<integer>]
fails here with a KeyError
.像字典一样,对
Enum
索引访问期望传入枚举名称,因此Foo[<integer>]
在这里失败并出现KeyError
。
You can cast it to a list first:您可以先将其转换为列表:
bar = random.choice(list(Foo))
This works because Enum
does support iteration .这是有效的,因为
Enum
确实支持迭代。
Demo:演示:
>>> from enum import Enum
>>> import random
>>> class Foo(Enum):
... a = 0
... b = 1
... c = 2
...
>>> random.choice(list(Foo))
<Foo.a: 0>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.