news 2026/4/28 23:47:39

python枚举类型遍历数据并获得索引号

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python枚举类型遍历数据并获得索引号

在 Python 中,可以使用enum模块创建枚举类型,并通过遍历枚举成员来获取其索引号(即枚举值的序号)。以下是详细方法和示例:


方法 1:使用enum.Enumenumerate()

通过enumerate()遍历枚举成员,同时获取索引和枚举值。

fromenumimportEnumclassColor(Enum):RED=1GREEN=2BLUE=3# 遍历枚举并获取索引和值forindex,colorinenumerate(Color,start=1):# start=1 表示索引从1开始(默认从0)print(f"Index:{index}, Name:{color.name}, Value:{color.value}")

输出:

Index: 1, Name: RED, Value: 1 Index: 2, Name: GREEN, Value: 2 Index: 3, Name: BLUE, Value: 3

方法 2:直接通过枚举成员的namevalue属性

如果不需要显式遍历索引,可以直接访问枚举成员的属性:

forcolorinColor:print(f"Name:{color.name}, Value:{color.value}")

输出

Name: RED, Value: 1 Name: GREEN, Value: 2 Name: BLUE, Value: 3

方法 3:获取枚举成员的序号(基于定义顺序)

如果需要枚举成员的定义顺序序号(从 0 开始),可以通过list(Enum).index(member)实现:

forcolorinColor:index=list(Color).index(color)# 获取定义顺序的索引(从0开始)print(f"Order Index:{index}, Name:{color.name}, Value:{color.value}")

输出:

Order Index: 0, Name: RED, Value: 1 Order Index: 1, Name: GREEN, Value: 2 Order Index: 2, Name: BLUE, Value: 3

方法 4:使用__members__属性

通过__members__访问枚举的名称到成员的映射,再结合enumerate()

fori,nameinenumerate(Color.__members__,start=1):color=Color[name]print(f"Index:{i}, Name:{name}, Value:{color.value}")

输出

Index: 1, Name: RED, Value: 1 Index: 2, Name: GREEN, Value: 2 Index: 3, Name: BLUE, Value: 3

总结

  • 索引需求:如果需要自定义索引(如从 1 开始),用enumerate(Enum, start=1)
  • 定义顺序序号:用list(Enum).index(member)获取 0 开始的序号。
  • 直接访问属性:枚举成员的namevalue是最常用的属性。

根据需求选择合适的方法即可!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/28 23:42:26

unrpa终极指南:解密Ren‘Py游戏资源提取的完整解决方案

unrpa终极指南:解密RenPy游戏资源提取的完整解决方案 【免费下载链接】unrpa A program to extract files from the RPA archive format. 项目地址: https://gitcode.com/gh_mirrors/un/unrpa 在视觉小说和独立游戏开发领域,RPA文件格式已成为Ren…

作者头像 李华
网站建设 2026/4/28 23:39:26

如何用5个文件实现微信自动化:WechatBot轻量级解决方案

如何用5个文件实现微信自动化:WechatBot轻量级解决方案 【免费下载链接】WechatBot 项目地址: https://gitcode.com/gh_mirrors/wechatb/WechatBot 你是否厌倦了每天重复回复相同的微信消息?是否希望有一个24小时在线的智能助手帮你处理繁琐的沟…

作者头像 李华
网站建设 2026/4/28 23:37:46

vCenter Server改名记:从FQDN、Hostname到PNID,一次搞懂这三个关键标识

vCenter Server三大标识深度解析:FQDN、Hostname与PNID的设计哲学与实践影响 在VMware虚拟化架构中,vCenter Server作为核心管理组件,其网络标识的准确配置直接关系到整个vSphere环境的稳定运行。许多管理员在首次接触FQDN、Hostname和PNID这…

作者头像 李华
网站建设 2026/4/28 23:36:23

5分钟掌握Unity游戏去马赛克:免费插件完整使用指南

5分钟掌握Unity游戏去马赛克:免费插件完整使用指南 【免费下载链接】UniversalUnityDemosaics A collection of universal demosaic BepInEx plugins for games made in Unity3D engine 项目地址: https://gitcode.com/gh_mirrors/un/UniversalUnityDemosaics …

作者头像 李华
网站建设 2026/4/28 23:35:22

如何突破8位MCU性能瓶颈?GRBL_for_STM32嵌入式系统移植指南

如何突破8位MCU性能瓶颈?GRBL_for_STM32嵌入式系统移植指南 【免费下载链接】GRBL_for_STM32 A code transportation from origin grbl_v1.1f to STM32F103VET6, mainly prepare for my MegaCNC project. 项目地址: https://gitcode.com/gh_mirrors/gr/GRBL_for_S…

作者头像 李华