如何在枚举 class 的特定范围内使用 Python 中的十六进制值进行迭代
How to iterate within a specific range of enum class with Hex value in Python
我有以下 class 枚举:
class LogLevel(Enum):
level_1 = 0x30
level_2 = 0x31
level_3 = 0x32
level_4 = 0x33
level_5 = 0x34
level_6 = 0x35
level_7 = 0x36
level_8 = 0x37
level_9 = 0x38
我需要从 level_5 迭代到 level_6。
我尝试了 islice() 但没有成功
>>> [LogLevel(i) for i in range(LogLevel.level_5.value, LogLevel.level_7.value)]
[<LogLevel.level_5: 52>, <LogLevel.level_6: 53>]
您可以使用 IntEnum
:
来简化它
>>> [LogLevel(i) for i in range(LogLevel.level_5, LogLevel.level_7)]
[<LogLevel.level_5: 52>, <LogLevel.level_6: 53>]
如果级别按升序排序,则尝试:
list(LogLevel)[4:6]
给出:
>> [<LogLevel.level_5: 52>, <LogLevel.level_6: 53>]
如果级别未排序,请尝试:
levels = ['level_5','level_6']
[i for i in list(LogLevel) if i.name in levels]
这给出了
[<LogLevel.level_5: 52>, <LogLevel.level_6: 53>]
我有以下 class 枚举:
class LogLevel(Enum):
level_1 = 0x30
level_2 = 0x31
level_3 = 0x32
level_4 = 0x33
level_5 = 0x34
level_6 = 0x35
level_7 = 0x36
level_8 = 0x37
level_9 = 0x38
我需要从 level_5 迭代到 level_6。
我尝试了 islice() 但没有成功
>>> [LogLevel(i) for i in range(LogLevel.level_5.value, LogLevel.level_7.value)]
[<LogLevel.level_5: 52>, <LogLevel.level_6: 53>]
您可以使用 IntEnum
:
>>> [LogLevel(i) for i in range(LogLevel.level_5, LogLevel.level_7)]
[<LogLevel.level_5: 52>, <LogLevel.level_6: 53>]
如果级别按升序排序,则尝试:
list(LogLevel)[4:6]
给出:
>> [<LogLevel.level_5: 52>, <LogLevel.level_6: 53>]
如果级别未排序,请尝试:
levels = ['level_5','level_6']
[i for i in list(LogLevel) if i.name in levels]
这给出了
[<LogLevel.level_5: 52>, <LogLevel.level_6: 53>]