我对Python比较陌生,我有兴趣找到创建枚举的最简单方法。
我找到的最好的东西是:
(APPLE, BANANA, WALRUS) = range(3)
将APPLE设置为0,将BANANA设置为1,等等。
但我想知道是否有更简单的方法。
答案 0 :(得分:4)
你可以用它。虽然稍微长一些,但更具可读性和灵活性。
from enum import Enum
class Fruits(Enum):
APPLE = 1
BANANA = 2
WALRUS = 3
编辑:Python 3.4
答案 1 :(得分:4)
在python 3.4(docs)中添加了枚举。有关详细信息,请参阅PEP 0435。
如果您使用的是python 2.x,则pypi上存在backport。
pip install enum34
您的用法示例与python枚举的功能API最相似:
>>> 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
,但除非您有充分的理由需要这种行为,否则我不建议这样做。
答案 2 :(得分: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>
在你的问题中使用范围是一个更好的选择。
In [18]: APPLE,BANANA,WALRUS=range(1,4)
答案 3 :(得分:0)
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'}
答案 4 :(得分:0)
您也可以使用dict:
d = {
1: 'APPLE',
2: 'BANANA',
3: 'WALRUS'
}