Python 将if语句重写到字典中

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

所以我现在写了一个if/elif语句,但我似乎不知道如何重写到字典中

我现在有这个

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所述,请回顾并向我们展示您的尝试。不要发表评论。把它编辑成你的问题。这闻起来像是个问题。你考虑过使用吗?