我相对于Python比较新,我想知道创建枚举的最简单方法。
我找到的最好方式是:
(APPLE, BANANA, WALRUS) = range(3)
将苹果设为0,香蕉设为1等。
不过我在想是否有更简单的方法。
我相对于Python比较新,我想知道创建枚举的最简单方法。
我找到的最好方式是:
(APPLE, BANANA, WALRUS) = range(3)
将苹果设为0,香蕉设为1等。
不过我在想是否有更简单的方法。
from enum import Enum
class Fruits(Enum):
APPLE = 1
BANANA = 2
WALRUS = 3
编辑:Python 3.4
在Python 3.4中新增了枚举类型(文档)。详细信息请参见PEP 0435。
如果您使用的是Python 2.x,则可以在pypi上找到后移版本。
pip install enum34
>>> from enum import Enum
>>> MyEnum = Enum('MyEnum', 'APPLE BANANA WALRUS')
>>> MyEnum.BANANA
<MyEnum.BANANA: 2>
然而,这是一个更典型的使用示例:
class MyEnum(Enum):
apple = 1
banana = 2
walrus = 3
如果需要将枚举实例与整数进行比较,您也可以使用 IntEnum
,但我不建议这样做,除非您有充分的理由需要这种行为。
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>
像你的问题一样,使用范围是更好的选择。
In [18]: APPLE,BANANA,WALRUS=range(1,4)
a = ('APPLE', 'BANANA', 'WALRUS')
list(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)]
此外,您可以使用enumerate
创建字典以获得所需的输出。
dict(enumerate(a, start=1))
{1: 'APPLE', 2: 'BANANA', 3: 'WALRUS'}
你也可以使用字典:
d = {
1: 'APPLE',
2: 'BANANA',
3: 'WALRUS'
}
Enum
初始化器:Fruits = Enum('Fruits', 'APPLE BANANA WALRUS')
。 - jmeAPPLE=654, BANANA = 980
等等...? - Utsav TFruits = Enum('Fruits', dict(APPLE=62, BANANA=980))
。其中,'Fruits'是枚举类型的名称,而APPLE
和BANANA
是枚举类型中的元素,它们分别对应着整型值62和980。 - jme