簡體   English   中英

枚舉上的 random.choice

[英]random.choice on Enum

我想在Enum上使用random.choice

我試過:

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

但是此代碼失敗並顯示KeyError 如何選擇Enum的隨機成員?

一個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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM