我使用Enum4库创建一个枚举类如下:
class Color(Enum):
RED = 1
BLUE = 2
我想把[1,2]作为一个列表打印出来。我怎样才能做到这一点呢?
我使用Enum4库创建一个枚举类如下:
class Color(Enum):
RED = 1
BLUE = 2
我想把[1,2]作为一个列表打印出来。我怎样才能做到这一点呢?
当前回答
使用_member_names_快速简单的结果,如果它只是名称,即。
Color._member_names_
还有_member_map_,它返回元素的有序字典。这个函数返回一个集合。OrderedDict,因此您可以使用color . _member_map_items()和color . _member_map_values()。如。
return list(map(lambda x: x.value, Color._member_map_.values()))
将返回颜色的所有有效值
其他回答
给定一个基于标准python3 enum /IntEnum类的枚举:
from enum import IntEnum
class LogLevel(IntEnum):
DEBUG = 0
INFO = 1
WARNING = 2
ERROR = 3
可以执行以下操作来获取枚举常量列表:
>>> print(list(LogLevel))
[<LogLevel.DEBUG: 0>, <LogLevel.INFO: 1>, <LogLevel.WARNING: 2>, <LogLevel.ERROR: 3>]
我发现使用枚举常量比使用int型更有表现力。如果枚举从IntEnum继承,则所有枚举常量也是int型,并且可以在任何地方使用:
>>> level = LogLevel.DEBUG
>>> level == 0
True
>>> level == 1
False
>>> level == LogLevel.INFO
False
>>> level == LogLevel.DEBUG
True
>>> "%d" % level
'0'
>>> "%s" % level
'LogLevel.DEBUG'
你可以使用IntEnum:
from enum import IntEnum
class Color(IntEnum):
RED = 1
BLUE = 2
print(int(Color.RED)) # prints 1
获取整型数组的列表:
enum_list = list(map(int, Color))
print(enum_list) # prints [1, 2]
一种方法是获取_value2member_map_属性的键值:
class Color(Enum):
RED = 1
BLUE = 2
list(Color._value2member_map_.keys())
# [1, 2]
只使用:
[e.value for e in Color]
生产:
[1, 2]
要获得名称,请使用:
[e.name for e in Color]
生产:
(“红”、“蓝”)
要对任何类型的值使用Enum,请尝试以下方法: 更新了一些改进…谢谢@杰夫,谢谢你的小费!
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 'GREEN'
BLUE = ('blue', '#0000ff')
@staticmethod
def list():
return list(map(lambda c: c.value, Color))
print(Color.list())
结果:
[1, 'GREEN', ('blue', '#0000ff')]