关于元组的django(但真的是python)古玩

时间:2012-07-12 05:27:14

标签: python django tuples

所以我有一个元组:

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

这是一个django-thing,一个2-plesle的元组。

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

鉴于我有M并且我有上面的元组,我可以运行什么功能,可以快速有效地返回“家伙”? (或者真的,从上面的'(“M”,“guy”)中检索值“guy”)2-ple) (我注意到这是因为我知道该怎么做

def stackOverFlowAnswer(value):
    return "guy"

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

4 个答案:

答案 0 :(得分:5)

使用dictionary代替元组列表。

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

print SEX['M']

您还可以快速识别输入是否有效(出现在字典中):

val = "Z"
if val not in SEX:
    print "Invalid value"

答案 1 :(得分:5)

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

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

您可以编写函数来获取'M'SEX

的参数
for s in SEX:
     if s[0]== 'M':
         print s[1]
          #or return s[1]