在 Python 中按值获取枚举名称
Get Enum name by value in Python
要按值获取枚举名称,请将值传递给枚举类并访问name
属性,例如Sizes(1).name
. 当值传递给类时,我们可以访问相应的枚举成员,我们可以访问该成员的name
属性。
主程序
from enum import Enum class Sizes(Enum): SMALL = 1 MEDIUM = 2 LARGE = 3 print(Sizes(1).name) # 👉️ SMALL print(Sizes(2).name) # 👉️ MEDIUM print(Sizes(3).name) # 👉️ LARGE
该Sizes(1)
语法允许我们将整数传递给类并获取相应的枚举成员。
主程序
from enum import Enum class Sizes(Enum): SMALL = 1 MEDIUM = 2 LARGE = 3 value = 1 print(Sizes(value)) # 👉️ Sizes.SMALL print(Sizes(value).name) # 👉️ SMALL
当您事先不知道枚举成员的名称时(因为它是从文件中读取或从 API 中获取的),这很有用。
如果您需要获取枚举名称或值的列表,请使用列表理解。
主程序
from enum import Enum class Sizes(Enum): SMALL = 1 MEDIUM = 2 LARGE = 3 values = [member.value for member in Sizes] print(values) # 👉️ [1, 2, 3] names = [member.name for member in Sizes] print(names) # 👉️ ['SMALL', 'MEDIUM', 'LARGE']
列表推导用于对每个元素执行一些操作,或者选择满足条件的元素子集。
如果您需要获取包含每个枚举成员的名称和值的元组列表,您可以使用相同的方法。
主程序
from enum import Enum class Sizes(Enum): SMALL = 1 MEDIUM = 2 LARGE = 3 result = [(member.name, member.value) for member in Sizes] # 👇️ [('SMALL', 1), ('MEDIUM', 2), ('LARGE', 3)] print(result)
每个元组中的第一个元素是名称,第二个元素是枚举成员的值。
in
如果您需要检查一个值是否在枚举中,请使用运算符。
主程序
from enum import Enum class Sizes(Enum): SMALL = 1 MEDIUM = 2 LARGE = 3 values = [member.value for member in Sizes] print(values) # 👉️ [1, 2, 3] if 2 in values: # 👇️ this runs print('2 is in values')
in 运算符
测试成员资格。
例如,如果是 的成员,则x in l
计算为 ,否则计算为。True
x
l
False
for
如果需要遍历枚举,可以使用简单循环。
主程序
from enum import Enum class Sizes(Enum): SMALL = 1 MEDIUM = 2 LARGE = 3 for size in Sizes: print(size) print(size.name, size.value)