1

所以我有一个元组:

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

这是一个 django 的东西,一个 2-ples 的元组。

接下来,我有一个字符串 -M

鉴于我有 M并且我有上面的元组,我可以运行什么函数来快速有效地返回“guy”?(或者实际上,从上面的 `("M","guy") 2-ple 中检索值“guy”)(我注意到这一点是因为我知道该怎么做

def stackOverFlowAnswer(value):
    return "guy"

)

我是否必须遍历整个元组(是的,它只有 2 长。我只是对这个感到好奇),还是有更快的方法来做到这一点?

4

4 回答 4

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 回答
5

定义一个伴随字典。Django 可以使用列表,在其他地方你可以使用 dict。

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

在你的情况下你可能不需要这个,但在 django 中,如果这个元组被用作choices给定的字段,你可以使用该get_FOO_display()模型的实例的函数来获取值,在你的情况下,“guy”代表“M” . 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 回答