Home > Software design >  Python - How to get Enum value by index
Python - How to get Enum value by index

Time:05-01

I have an Enum of days_of_the week in Python:

class days_of_the_week(str, Enum):
  monday = 'monday'
  tuesday = 'tuesday'
  wednesday = 'wednesday'
  thursday = 'thursday'
  friday = 'friday'
  saturday = 'saturday'
  sunday = 'sunday'

I want to access the value using the index.

I've tried:

days_of_the_week.value[index]
days_of_the_week[index].value
days_of_the_week.values()[index]

and so on... But everything I tried didn't returned me the value of enum (eg. days_of_the_week[1] >>> 'tuesday')

Is there a way?

CodePudding user response:

Those are simply string constants. They do not have an "index" and cannot be referred to that way.

However, you don't need to write that at all. Python provides it.

>>> import calendar
>>> list(calendar.day_name)
['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
>>> calendar.day_name[5]
'Saturday'
>>> 

CodePudding user response:

IIUC, you want to do:

from enum import Enum

class days_of_the_week(Enum):
    monday = 0
    tuesday = 1
    wednesday = 2
    thursday = 3
    friday = 4
    saturday = 5
    sunday = 6

>>> days_of_the_week(1).name
'tuesday'
  • Related