详解Python 用字典模拟switch-case语句

  • Post category:Python

当我们需要根据某个变量的不同值来执行不同的操作时,通常会使用switch-case语句。但是在Python语言中,本身并不提供switch-case语句,那么我们该如何实现类似的功能呢?

一种比较优雅的实现方式是使用字典模拟switch-case语句。具体实现方法如下:

1.使用字典来存储case与对应操作的映射关系,相当于switch语句中的case分支和执行对应分支的代码块。

2.将变量作为key值,通过字典的get()方法获取对应的操作函数,则相当于执行switch语句中对应的分支。

下面我们通过两个示例来具体说明Python如何使用字典模拟switch-case语句。

示例1:根据数字大小分类

假设我们需要根据一个数字的大小来分类,分为1-5、6-9、大于等于10三种情况,然后输出相应的分类结果。在这里,我们可以使用字典模拟switch-case语句根据数字大小来判断分类,并输出对应的结果。

def case_one_to_five():
    print("数字在1-5之间")

def case_six_to_nine():
    print("数字在6-9之间")

def case_greater_equal_ten():
    print("数字大于等于10")

# 使用字典存储case与操作函数的映射关系
case_dict = {
    1: case_one_to_five,
    2: case_one_to_five,
    3: case_one_to_five,
    4: case_one_to_five,
    5: case_one_to_five,
    6: case_six_to_nine,
    7: case_six_to_nine,
    8: case_six_to_nine,
    9: case_six_to_nine,
    10: case_greater_equal_ten,
    # 大于10的数字也执行case_greater_equal_ten操作函数
}

# 定义变量number,并根据不同的值调用对应的操作函数
number = 7
case_dict.get(number, lambda:print("数字不符合要求"))()

输出结果:

数字在6-9之间

示例2:根据字符串内容执行不同操作

假设我们需要根据输入的命令来执行不同的操作,命令包括add、del、update三种,分别对应增加、删除、修改操作。在这里,我们可以使用字典模拟switch-case语句,根据字符串内容来判断命令,并执行相应的操作函数。

def add_element():
    print("执行增加操作")

def del_element():
    print("执行删除操作")

def update_element():
    print("执行修改操作")

# 使用字典存储case与操作函数的映射关系
case_dict = {
    "add": add_element,
    "del": del_element,
    "update": update_element,
}

# 定义变量cmd,并根据不同的值调用对应的操作函数
cmd = 'add'
case_dict.get(cmd, lambda:print("不支持的命令"))()

输出结果:

执行增加操作

通过以上示例,我们可以看出使用字典模拟switch-case语句是一种较为优雅的实现方式,能够满足我们在Python中根据变量值执行不同操作的需求。