Python 将if语句重写到字典中
所以我现在写了一个if/elif语句,但我似乎不知道如何重写到字典中 我现在有这个Python 将if语句重写到字典中,python,dictionary,Python,Dictionary,所以我现在写了一个if/elif语句,但我似乎不知道如何重写到字典中 我现在有这个 def determineRank(years): if years == 1: return "Freshman" elif years == 2: return "Sophmore" elif years == 3: return "Junior" else: return "Senior" 我目前有: dYea
def determineRank(years):
if years == 1:
return "Freshman"
elif years == 2:
return "Sophmore"
elif years == 3:
return "Junior"
else:
return "Senior"
我目前有:
dYear = {"Freshman":1, "Sophmore":2, "Junior":3, "Senior":4}
但是我不确定从这里到哪里去。您的函数体将如下所示:
rank = {
1: "Freshman",
2: "Sophomore",
3: "Junior",
4: "Senior"
}
return rank[years]
注意,这不会检查输入是否有错误;如果你给它一个0或5,你会得到一个访问错误。我将把检查作为学生的练习。:-) 您的字典是向后的,应该是列表或元组
def determineRank(years):
return [None, 'Freshman', 'Sophomore', 'Junior', 'Senior'][years]
通过将定义绑定为默认参数,可以避免在每次调用时创建新列表或元组:
def determineRank(years, ranks=(None, 'Freshman', 'Sophomore', 'Junior', 'Senior')):
return ranks[years]
您可以使用模运算避免无关的None
:
def determineRank(years, ranks=('Freshman', 'Sophomore', 'Junior', 'Senior')):
return ranks[years%len(ranks)]
请注意,您的原始代码通过返回第四年的
'Senior'
和所有其他输入,更优雅地处理错误输入(但仍然不正确),而上面的代码片段对于错误输入有各种行为(如20
或'hello'
)。您可以使用defaultdict
In [1]: from collections import defaultdict
In [2]: student = defaultdict(lambda: 'Senior')
In [3]: for k, v in ((1, 'Freshman'), (2, 'Sophmore'), (3, 'Junior')):
...: student[k] = v
...:
In [4]: student[1]
Out[4]: 'Freshman'
In [5]: student[2]
Out[5]: 'Sophmore'
In [6]: student[3]
Out[6]: 'Junior'
In [7]: student[4]
Out[7]: 'Senior'
In [8]: student[9]
Out[8]: 'Senior'
dict_year={1:'Freshman',2:'Sophmore',3:'Junoir',4:'Senior'}
你可以做dict_year.get(1)
获得Freshman
你的尝试是什么?你应该在你的问题中展示它们,这样人们就可以对它为什么不起作用给出具体的指导。欢迎来到。如@roganjosh所述,请回顾并向我们展示您的尝试。不要发表评论。把它编辑成你的问题。这闻起来像是个问题。你考虑过使用吗?