0

假设它是给定的以下结构:

from django.utils.translation import ugettext_lazy as _

# Constants for all available difficulty types.
SIMPLE = 1
MEDIUM = 2
DIFFICULT = 3

# Names for all available difficulty types.
DIFFICULTIES = (
    (SIMPLE, _("simple")),
    (MEDIUM, _("medium")),
    (DIFFICULT, _("difficult")),
)

如果给定一个常量,你如何获得字符串值?

循环很容易编程,但是有没有一个更短的类似 python 的方式和一个表达式?

表达方式

困难[简单][1]

返回字符串“中”。有什么明显的错误。

4

3 回答 3

2

当然你可以使用字典,但是数组是给定的。

那就换吧。(我假设你保留了收据..)

>>> dict(DIFFICULTIES)
{1: 'simple', 2: 'medium', 3: 'difficult'}
>>> d = dict(DIFFICULTIES)
>>> d[MEDIUM]
'medium'

在未排序的元组中搜索某些东西根本不是处理事情的正确方法。我想你可以做

>>> next(v for k,v in DIFFICULTIES if k == MEDIUM)
'medium'

如果您想避免带有冒号的 for 循环,但这有点愚蠢。

于 2012-11-11T15:33:35.967 回答
1

仅仅因为你指定了一个元组,一个从 0 开始的索引,你要么需要切换到字典,要么用正确的值修改你的常量:

DIFFICULTIES = {SIMPLE: "simple", MEDIUM: "medium", DIFFICULT: "difficult"}

或者:

SIMPLE, MEDIUM, DIFFICULT = range(3)
于 2012-11-11T14:43:05.583 回答
0

使用字典:

SIMPLE, MEDIUM, DIFFICULT = range(3)
DIFFICULTIES = {
    SIMPLE: _("simple"),
    MEDIUM: _("medium"),
    DIFFICULT: _("difficult")
}
DIFFICULTIES[SIMPLE] # will return "simple"
于 2012-11-11T14:43:54.873 回答