所以我有一个元组:
SEX = [
("M","guy"),
("F","girl")
]
这是一个django-thing,一个2-plesle的元组。
接下来,我有一个字符串 - M
鉴于我有M
并且我有上面的元组,我可以运行什么功能,可以快速有效地返回“家伙”? (或者真的,从上面的'(“M”,“guy”)中检索值“guy”)2-ple)
(我注意到这是因为我知道该怎么做
def stackOverFlowAnswer(value):
return "guy"
)
我是否必须遍历整个元组(是的,它只有2长。我只是对这个很好奇),还是有更快的方法来做这个?
答案 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]