elif使用字典,但没有超出值

这个问题在这里已经有了答案:

  • 替代Python中的switch语句? 44个答案

  • def functionA(a1, a2, a3):
        results = {
            'case1': a2 / a3 if a3 != 0.0 else a2,
            'case2': 1,
            # ...
        }
        return results[a1]
    

    但是,我建议不要这种方法,因为必须首先计算整个字典才能提取单个值。

    相反,如果你真的想使用字典并且效率很高,我会建议:

    myproc = {
        'case1': lambda a2, a3: a2 / a3 if a3 != 0.0 else a2,
        'case2': lambda a2, a3: 1
    }
    

    然后:

    >>> myproc['case1'](2, 3)
    0.6666666666666666
    

    你可以在字典中使用三元运算符

    def functionA(a1, a2, a3):
    
        results = {
            'case1': a2 if a3==0 else a2/a3,
            'case2': 1
        }
        return results[a1]
    

    链接:https://repl.it/NRkd


    如果它只是一个值,你可以用一个简单的if-else来完成。

    def functionA(a1, a2, a3):
    
         if a3:
            case1_value = a2/a3
         else: 
            case1_value = a2
    
        results = {
            'case1': case1_value,
            'case2': 1,
            ...
        }
        return results[a1]
    

    或者用这个if-else条件创建一个dvision函数并将其用于你的dict值。

    链接地址: http://www.djcxy.com/p/42769.html

    上一篇: elif using dictionary but without excecute the values

    下一篇: python: Piping a value through an if/elif statement