在函数内使用字典

时间:2018-07-18 09:48:00

标签: python function dictionary

我在Udemy的Python课程中找到一个练习,要求我创建一个名为return_day的函数。它建议我使用字典,但是过去两个小时我一直没有成功。因此,我通过了练习写作:

def return_day(x):
    if x == 1:
        return "Sunday"
    elif x==2:
        return "Monday"
    elif x==3:
        return "Tuesday"
    elif x==4:
        return "Wednesday"
    elif x==5:
        return "Thursday"
    elif x==6:
        return "Friday"
    elif x==7:
        return "Saturday"
    return None

...但是完全不同。有人可以帮我吗? 为什么下面的代码不起作用?

def return_day(x):
    if x > 0 and x<=7:
        return x=dict(1="Sunday",2="Monday",3="Tuesday",4="Wednesday",5="Thursday",6="Friday",7="Saturday")

    return None

3 个答案:

答案 0 :(得分:1)

字典是从键到值的映射。在这种情况下,您希望将星期几编号映射为字符串。

有两种方法可用于提取给定键的值:dict.__getitem__dict.get。当您可以确保键在字典中存在时,使用第一个键。否则结果将为KeyError。如果找不到密钥,后者将返回None

因此,首先定义字典:

day_map = {1: "Sunday", 2: "Monday", 3: "Tuesday", 4: "Wednesday",
           5: "Thursday", 6: "Friday", 7: "Saturday"}

接下来定义一个使用字典作为输入的函数:

def return_day(x, day_map_dict):
   return day_map_dict[x]

print(return_day(1, day_map))  # 'Sunday'

将字典定义为输入的好处是,每次运行函数时都不需要重新定义字典。此外,您可能有多个映射(例如,从星期一开始的一周),这种结构将使您可以在不同的映射之间无缝切换。

请注意,dict[k]dict.__getitem__(k)的简写。如果该数字不是1到7之间的整数,即与KeyError键一致,则上述函数将返回day_map。如果您希望返回None,请使用dict.get

def return_day(x, day_map_dict):
   return day_map_dict.get(x)

print(return_day(8, day_map))  # None

答案 1 :(得分:0)

语法returnx=dict()没有意义。您应该做的是先定义字典,然后将键插入字典以返回相关值。

首先定义 d=dict(1="Sunday",2="Monday",3="Tuesday",4="Wednesday",5="Thursday",6="Friday",7="Saturday")

然后return d[x]

答案 2 :(得分:0)

您应该指定使用的语言。从函数定义看来,似乎是Python,从字典定义来看,我也不知道。正确的Python代码如下:

d={1:"Sunday",2:"Monday",3:"Tuesday",4:"Wednesday",5:"Thursday",6:"Friday",7:"Saturday"}
def return_day(x):
    return d[x]

return_day(7) # return 'Saturday'