当前位置: 首页 > 知识库问答 >
问题:

Python中开关语句的替换?

贺亦
2023-03-14

我想用Python编写一个函数,根据输入索引的值返回不同的固定值。

在其他语言中,我会使用switchcase语句,但Python似乎没有switch语句。在这个场景中,推荐的Python解决方案是什么?

共有3个答案

贺文彬
2023-03-14

我一直喜欢这样做

result = {
  'a': lambda x: x * 5,
  'b': lambda x: x + 7,
  'c': lambda x: x - 2
}[value](x)

从这儿

甄胡非
2023-03-14

如果您想要默认值,您可以使用字典get(key[,默认值])函数:

def f(x):
    return {
        'a': 1,
        'b': 2
    }.get(x, 9)    # 9 will be returned default if x is not found
华宇
2023-03-14

下面的原始答案写于2008年。从那时起,Python3.10(2021)引入了match-case语句,它为Python提供了一流的“开关”实现。例如:

def f(x):
    match x:
        case 'a':
            return 1
        case 'b':
            return 2
        case _:        
            return 0   # 0 is the default case if x is not found

匹配-case语句比这个简单的示例强大得多。

你可以使用字典:

def f(x):
    return {
        'a': 1,
        'b': 2,
    }[x]
 类似资料:
  • null 代码如下所示: 和我想提高的班级: 我该怎么办?每个字段都在使用,但每个触发器都在使用。另外,这种情况有点特殊(OnFinalMethod需要参数)。基于上面的文章,我尝试重构这段代码,但没有成功。 你知道吗?:)

  • 我们的老师让我们创建一个关于给定情况的java程序,即使用if/else的每小时工资率,这就是我得出的结果,我对此感到高兴(我只是一个初学者)。接下来的指令是用switch语句替换if/else。他还没有讨论switch语句。我试图搜索它们,但我无法理解。请帮忙。非常感谢。 这就是确切的指示:1。使用if/else构造编写一个程序,该程序将根据工作小时数计算人员工资。注意ff:工资率为每小时35菲

  • 问题内容: 我想用Python编写一个函数,该函数根据输入索引的值返回不同的固定值。 在其他语言中,我将使用语句,但是Python似乎没有语句。在这种情况下,推荐的Python解决方案是什么? 问题答案: 你可以使用字典:

  • 问题内容: 因此,我今天编写了一种方法,该方法结合了嵌套开关语句的使用,并且代码对我来说看起来很简洁明了,但是有人告诉我,嵌套开关语句通常不是最好的处理方法,因为它们可能会使更多的语句变得混乱。切换添加的语句。这是我的代码的示例: 因此,我的问题是,从本质上讲,什么是这些switch语句的合适替代方案? 问题答案: 我建议您用对过程的调用替换每个嵌套的switch语句,然后该过程将执行嵌套的swi

  • rank ▲ ✰ vote url 62 370 162 300 url Python中用什么代替switch语句? 我想写一个函数,实现输入一个值对应输出另一个值. 在其他语言我可以用switch或者case语句,但是Python里没有switch.Python里如何解决这个问题? 你可以用一个字典: def f(x): return { 'a': 1,

  • 目前,我正在使用switch语句。当我有多个带有switch语句的循环时,我会遇到一个问题。 当我退出第二个switch语句(往上说)时,Java抛出,我不太清楚为什么 应该触发新的用户输入? 我希望有人能帮我弄清楚这一点。我还尝试使用,而不使用,但它也出现了同样的错误。