写代码时,遇到多个条件分支,很多人第一反应就是写一连串的 if-elif-else。比如根据用户输入的星期几,返回对应的提醒事项:
def get_tips(day):
if day == "周一":
return "开会多,带好笔记本"
elif day == "周二":
return "下午有培训,别迟到"
elif day == "周三":
return "中间日,注意休息"
elif day == "周四":
return "快周末了,检查任务进度"
elif day == "周五":
return "准备收尾,愉快过周末"
else:
return "请输入正确的星期"
这段代码能跑,但看起来有点啰嗦。每加一个新条件,就得再写一个 elif。其实,这种“一对一映射”的场景,完全可以用字典来替代。
用字典简化判断
把上面的逻辑改用字典实现:
def get_tips(day):
tips_map = {
"周一": "开会多,带好笔记本",
"周二": "下午有培训,别迟到",
"周三": "中间日,注意休息",
"周四": "快周末了,检查任务进度",
"周五": "准备收尾,愉快过周末"
}
return tips_map.get(day, "请输入正确的星期")
逻辑没变,但代码更清晰了。新增一个星期几,只需要在字典里加个键值对,不用动函数结构。.get() 方法还能优雅处理不存在的情况,避免报错。
处理复杂逻辑怎么办?
如果每个分支不只是返回字符串,而是要执行不同操作,也能用字典。这时候,字典的值可以是函数名。
def action_monday():
print("创建本周计划表")
def action_friday():
print("备份文件,关闭未完成任务")
def do_something(day):
actions = {
"周一": action_monday,
"周五": action_friday
}
func = actions.get(day)
if func:
func()
else:
print("今天没啥特别安排")
调用 do_something("周一") 就会执行对应的函数。这种方式让代码结构更松散,维护起来也方便。哪天要加个“周三自动整理邮箱”的功能,只管写函数,再往字典里一塞就行。
日常写脚本、做自动化小工具时,这种技巧特别实用。别总盯着 if-else 不放,换个思路,字典也能当“开关”用。