什么';在Python中设置枚举最干净的方法是什么?
我对Python比较陌生,我对找到创建枚举的最简单方法很感兴趣 我发现最好的是:什么';在Python中设置枚举最干净的方法是什么?,python,enums,enumeration,Python,Enums,Enumeration,我对Python比较陌生,我对找到创建枚举的最简单方法很感兴趣 我发现最好的是: (APPLE, BANANA, WALRUS) = range(3) 这将苹果设置为0,香蕉设置为1,等等 但我想知道是否有更简单的方法。使用枚举 In [4]: list(enumerate(('APPLE', 'BANANA', 'WALRUS'),1)) Out[4]: [(1, 'APPLE'), (2, 'BANANA'), (3, 'WALRUS')] noob的答案应该是这样的 In [13]:
(APPLE, BANANA, WALRUS) = range(3)
这将苹果设置为0,香蕉设置为1,等等
但我想知道是否有更简单的方法。使用枚举
In [4]: list(enumerate(('APPLE', 'BANANA', 'WALRUS'),1))
Out[4]: [(1, 'APPLE'), (2, 'BANANA'), (3, 'WALRUS')]
noob的答案应该是这样的
In [13]: from enum import Enum
In [14]: Fruit=Enum('Fruit', 'APPLE BANANA WALRUS')
枚举值不同于整数
In [15]: Fruit.APPLE
Out[15]: <Fruit.APPLE: 1>
In [16]: Fruit.BANANA
Out[16]: <Fruit.BANANA: 2>
In [17]: Fruit.WALRUS
Out[17]: <Fruit.WALRUS: 3>
可以使用enumerate创建元组列表以获得所需的输出
list(enumerate(a, start=1))
[(1, 'APPLE'), (2, 'BANANA'), (3, 'WALRUS')]
dict(enumerate(a, start=1))
{1: 'APPLE', 2: 'BANANA', 3: 'WALRUS'}
如果首先需要'APPLE'
,然后需要1
,则可以执行以下操作:
[(j, i +1 ) for i, j in enumerate(a)]
[('APPLE', 1), ('BANANA', 2), ('WALRUS', 3)]
此外,您还可以使用枚举
创建字典以获得所需的输出
list(enumerate(a, start=1))
[(1, 'APPLE'), (2, 'BANANA'), (3, 'WALRUS')]
dict(enumerate(a, start=1))
{1: 'APPLE', 2: 'BANANA', 3: 'WALRUS'}
你可以用这个。虽然篇幅稍长,但可读性和灵活性更高
from enum import Enum
class Fruits(Enum):
APPLE = 1
BANANA = 2
WALRUS = 3
编辑:Python 3.4您也可以使用dict:
d = {
1: 'APPLE',
2: 'BANANA',
3: 'WALRUS'
}
枚举是在Python3.4()中添加的。有关详细信息,请参阅 如果您使用的是Python2.x,那么pypi上就存在一个问题
pip install enum34
您的使用示例与python enum的函数API最为相似:
>>> from enum import Enum
>>> MyEnum = Enum('MyEnum', 'APPLE BANANA WALRUS')
>>> MyEnum.BANANA
<MyEnum.BANANA: 2>
如果需要枚举实例将equal与integer进行比较,也可以使用
IntEnum
,但我不建议这样做,除非有充分的理由需要这种行为 我同意这一点。Python codestyle支持显式编码。只需使用Enum
初始值设定项:Fruits=Enum('Fruits','APPLE BANANA WALRUS')
。如果我们希望有APPLE=654,BANANA=980
等等。@Noob API也支持:Fruits=Enum('Fruits',dict(APPLE=62,BANANA=980))
@downvoter请解释否决投票的原因。这样我就能知道我错过了什么。
class MyEnum(Enum):
apple = 1
banana = 2
walrus = 3