将if语句重写到字典中

2024-09-24 22:31:27 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我现在写了一个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}

但我不确定接下来该怎么办。你知道吗


Tags: returnif字典def语句elseelifyears
3条回答

你的字典是向后的,它应该是一个列表或元组。你知道吗

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)]

请注意,您的原始代码通过返回第4年的'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'

您的函数体如下所示:

rank = {
  1: "Freshman",
  2: "Sophomore",
  3: "Junior",
  4: "Senior"
}
return rank[years]

请注意,这不会检查输入是否有错误;如果向其输入0或5,则会出现访问错误。我把支票留给学生做练习。:-)

相关问题 更多 >