python获取枚举类的键和值/键列表/值列表
如果待解决的问题如题所述,那么此时你的问题已经解决了,一切将在这里终结。
如有帮助,欢迎留下足迹!
提示:注意使用格式化与不使用的区别
目录
2,判断值是否存在(获取所有值列表)
a, 自定义枚举类继承自IntEnum( StrEnum也一样)
b, 自定义枚举类继承自Enum
c,取出所有value进行判断(通用)
3,通过key名称获取value(映射关系)
4,同时获取key和value(映射关系)
代码最佳实践
假设自定义枚举类为LeEnum:
class LeEnum(IntEnum): A = 0 B = 1
1,判断key是否存在(获取所有key列表)
if key in LeEnum.__members__: pass
2,判断值是否存在(获取所有值列表)
a, 自定义枚举类继承自IntEnum( StrEnum也一样)
vals = list(map(int, LeEnum)) # 此时vals就是所有值列表
如果值都是字符串,则可以继承StrEnum,通过vals = list(map(str, LeEnum)) 来拿到所有值列表
即:if xxx in vals:
b, 自定义枚举类继承自Enum
如果硬要不区分类型而直接继承Enum,则可以直接遍历获取所有值列表:
for val in LeEnum: if val==1:
c,取出所有value进行判断(通用)
if xxx in LeEnum.__members__.values()# LeEnum.__members__.values()即可获得值列表
3,通过key名称获取value(映射关系)
方法1
if key in LeEnum.__members__: val = LeEnum.__members__[key]
方法2
val = '{}'.format(LeEnum[key])或 val ='%d' %(LeEnum[key])
方法3
LeEnum.__members__.get(key)
4,同时获取key和value(映射关系)
kv0 = LeEnum.__members__.items() for k,v in kv0: print(k,'{}'.format(v))
代码最佳实践
from enum import IntEnumclass LeEnum(IntEnum): A = 0 B = 1if __name__ == '__main__': key = "A" v0 = LeEnum[key] print(v0) # no v1='%d' %(LeEnum[key]) print(v1) v2 = '{}'.format(LeEnum[key]) print(v2) print("A's val: {}".format(LeEnum[key])) # 通过枚举的key取value,注意使用格式化和直接获取LeEnum[key]的区别 # 直接获取value列表 print("-----get vals0-----") vals0 = list(map(int, LeEnum)) print("vals0: {}".format(vals0)) print("vals0[1]: {}".format(vals0[1])) print(vals0[1]) # 获取value列表 print("-----get vals1-----") vals1 = LeEnum.__members__.values() if 1 in vals1: print("$$$$$") for v in vals1: print('{}'.format(v)) # 获取key列表 print("-----get keys-----") keys0 = LeEnum.__members__.keys() for k in keys0: print(k) # 获取key和value print("-----get kv0-----") kv0 = LeEnum.__members__.items() for k,v in kv0: print(k,'{}'.format(v)) # 通过枚举的key取value print("-----get v by k-----") if key in LeEnum.__members__: print("yeah, value:{}, all members:{}, type:{}".format(LeEnum.__members__[key],LeEnum.__members__, type(LeEnum.__members__))) v3 = LeEnum.__members__.get(key) print("v3: {}".format(v3)) print("-----for LeEnum-----") for v in LeEnum: print("v: {}".format(v))
speed running:
LeEnum.A00A's val: 0-----get vals0-----vals0: [0, 1]vals0[1]: 11-----get vals1-----$$$$$01-----get keys-----AB-----get kv0-----A 0B 1-----get v by k-----yeah, value:0, all members:OrderedDict([('A', ), ('B', )]), type:v3: 0-----for LeEnum-----v: 0v: 1
如有帮助,可以留下足迹,再会!