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]

文字列「medium」を返します。明らかに間違っていること。

4

3 に答える 3

2

もちろん、dictを使用することもできますが、配列は指定されています。

交換してください。(領収書を保管していたと思います。)

>>> 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 に答える