如何在枚举 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>]