पर random.choice मैं Enum पर random.choice का उपयोग करना चाहता हूं।पायथन 3.4: Enum
मैंने कोशिश की:
class Foo(Enum):
a = 0
b = 1
c = 2
bar = random.choice(Foo)
लेकिन इस कोड काम नहीं कर रहा, मैं यह कैसे कर सकते हैं?
पर random.choice मैं Enum पर random.choice का उपयोग करना चाहता हूं।पायथन 3.4: Enum
मैंने कोशिश की:
class Foo(Enum):
a = 0
b = 1
c = 2
bar = random.choice(Foo)
लेकिन इस कोड काम नहीं कर रहा, मैं यह कैसे कर सकते हैं?
एक Enum
ताकि आप इसे random.choice()
, जो 0 और len(Foo)
के बीच एक सूचकांक लेने की कोशिश करता है के लिए पारित नहीं हो सकता, एक अनुक्रम नहीं है। एक शब्दकोश की तरह, Enum
पर सूचकांक पहुंच की गणना नाम नामित होने की अपेक्षा करता है, इसलिए Foo[<integer>]
KeyError
के साथ यहां विफल रहता है।
आपको सबसे पहले एक सूची में डाली कर सकते हैं:
bar = random.choice(list(Foo))
यह काम करता है क्योंकि Enum
does support iteration।
डेमो:
>>> from enum import Enum
>>> import random
>>> class Foo(Enum):
... a = 0
... b = 1
... c = 2
...
>>> random.choice(list(Foo))
<Foo.a: 0>
यहां एक ही त्रुटि के समाधान की तलाश में आया था। ऊपर उठाना चाहता था। मुझे पता चला कि मैं पहले ही उभरा था। तब एहसास हुआ कि मैंने उसी पायथन फ़ाइल में एक ही जरूरत के लिए उसी जगह पर एक ही कलाकार लगाया था ... केवल एक बार ऊपर उठा सकता है। –
क्या आप इस कोड को करने की उम्मीद करते हैं? –
क्या आपने इसे पढ़ा है: https://mail.python.org/pipermail/python-ideas/2013- अक्टूबर/023673.html – jonrsharpe
@jonrsharpe: उस पोस्ट को याद आती है कि 'random.choice()' को * अनुक्रम *, एक पुनरावृत्त नहीं है। 'एनम' इष्टतम है, लेकिन एक अनुक्रम नहीं है। यह * पूर्णांक * द्वारा अनुक्रमण * का समर्थन नहीं करता है। यह भी देखें [निक द्वारा प्रतिक्रिया] (https://mail.python.org/pipermail/python-ideas/2013- अक्टूबर 0227575.html)। –