You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何高效获取Python字符串Enum类中成员的索引?

高效获取Python Enum成员的索引

给定如下Enum类:

from enum import Enum

class Animals(Enum):
    Dog= 'dog'
    Cat= 'cat'
    Chicken = 'chicken'
    Horse = 'horse'

当前使用list(Animals).index(Animals.Chicken)获取索引(结果为2),但该方法需要将枚举转换为列表后遍历查找,效率偏低,且无法修改Enum类本身,以下是两种更优方案:

方案1:预构建成员-索引映射字典(最优,O(1)查询)

利用enumerate按枚举定义顺序生成成员与索引的映射,仅需初始化一次,后续查询均为常数时间:

# 初始化一次,全局复用
animal_index_map = {member: idx for idx, member in enumerate(Animals)}

# 查询示例
print(animal_index_map[Animals.Chicken])  # 输出:2

该方式适合频繁查询的场景,完全规避了列表遍历的开销。

方案2:利用Enum内置的_member_names_属性

Enum类自带_member_names_属性,存储了成员名称的有序列表(与定义顺序一致),可通过成员的name属性快速定位索引:

print(Animals._member_names_.index(Animals.Chicken.name))  # 输出:2

这种方式无需额外维护字典,但本质仍是列表查找(时间复杂度O(n)),适合偶尔查询的场景,比直接转换成员列表略高效。

内容的提问来源于stack exchange,提问作者Gilad Raz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 21:40:42