Python 在函数中使用字典

Python 在函数中使用字典,python,function,dictionary,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:

我在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
def返回日(x):

如果x>0和x则语法
returnx=dict()
没有意义。您应该首先定义一个字典,然后将一个键插入字典以返回相关值

首先定义
d=dict(1=“星期日”,2=“星期一”,3=“星期二”,4=“星期三”,5=“星期四”,6=“星期五”,7=“星期六”)


然后
返回d[x]

您应该指定您使用的语言。从函数定义来看,它似乎是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'

字典是从键到值的映射。在本例中,您希望将一周中编号的日期映射到字符串

有两种方法可用于提取给定键的值:
dict.\uu getitem\uu
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.\uuuu getitem\uuuu(k)
的缩写。如果数字不是介于1和7之间的整数,即与
day\u map
键重合,则上述函数将返回
KeyError
。如果您希望返回
None
,请使用
dict.get

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

print(return_day(8, day_map))  # None

对不起,我更正了我帖子中的一些错误。现在应该更清楚了。为什么我不能在函数中插入字典d?@Jude,那是一种不好的做法。这意味着每次调用函数时都必须定义一个新的字典。你可以这样做。不这样做可能是最好的做法,但没有什么可以阻止你这样做。如果您在函数中定义了它,那么每次调用该函数时都会创建一个新字典。我明白了。谢谢你的回答。最后一件事:如果0>xYou可以简单地使用
d.get(x)
而不是
d[x]
,您建议如何返回None。这样,如果字典中不存在元素,则返回None。您还可以指定另一个默认值,例如
d.get(x,“未找到日期”)