1

だから私はタプルを持っています:

SEX = [
    ("M","guy"),
    ("F","girl")
]

これはdjango-thing、2pleのタプルです。

次は、文字列があります-M

私が M持っていて、上記のタプルを持っているとすると、「男」をすばやく効率的に返す実行できる関数は何ですか?(または、実際には、上記の `(" M "、" guy ")2-pleから値" guy "を取得します)(方法を知っているので、これに注意してください

def stackOverFlowAnswer(value):
    return "guy"

)。

タプル全体をループする必要がありますか(はい、長さは2つだけです。これに興味があります)、またはこれを行うためのより高速な方法はありますか?

4

4 に答える 4

5

コンパニオンディクショナリを定義します。Djangoはリストを使用でき、他の場所ではdictを使用できます。

SEX = [
    ("M","guy"),
    ("F","girl")
]
SEX_DICT = dict(SEX)
于 2012-07-12T05:32:03.933 に答える
5

タプルのリストの代わりに辞書を使用してください。

SEX = dict([
    ("M","guy"),
    ("F","girl")
])

print SEX['M']

入力が有効かどうか(辞書内に存在するかどうか)をすばやく特定することもできます。

val = "Z"
if val not in SEX:
    print "Invalid value"
于 2012-07-12T05:29:00.227 に答える
2

あなたの場合はこれは必要ないかもしれませんが、djangoでは、このタプルがchoicesフィールドに与えられたとおりに使用されるget_FOO_display()場合、そのモデルのインスタンスの関数を使用して値を取得できます。この場合、「M」の「guy」です。 。FOO小文字のフィールド名はどこにありますか。

したがって、このモデルを考えると:

SEX = [
    ("M","guy"),
    ("F","girl")
]
class SomeBody(models.Model):
    sex = models.CharField(max_length=1, choices=SEX)

ビューまたはテンプレートで、「表示」値get_sex_display()を取得するために使用できます。

people = SomeBody.objects.all()
for person in people:
    display_sex = person.get_sex_display()
    # do stuff to show the value...
于 2012-07-12T06:10:24.700 に答える
1

'M'とのパラメータを取る関数を書くことができますSEX

for s in SEX:
     if s[0]== 'M':
         print s[1]
          #or return s[1]
于 2012-07-12T05:31:44.203 に答える