python-提高功能的可读性和功能性

我有以下定义:

def heat( number ):

if number == "r":
    h = 12
elif number == "b":
    h = 24

return h

但是,我想使其看起来更好,而不必对if语句进行答复.有人告诉我可以按以下方式进行操作(我希望以此方式进行操作,因此,如果我仅能在此特定示例上获得帮助,则可以这样做):

def heat(number):
    m = { "r" : 12,
          "b" : 24 }
try:
    return m[number]
except KeyError:
    return 0.0

但是我不明白该如何返回“ h”的值,这就是我想要的.有人可以向我解释这种方法吗?我也感到困惑,地图和字典等.在此先感谢.

更新

好的,我得到了上面的示例,但是如果我对该函数有两个输入怎么办?

例如

def heat( temp, coeff )

我写的回报:

return m(heat, coeff) 

还是这行不通?

解决方法:

您还可以使用一条语句(如果您只有以下限制选项):

def heat(number):
    return 12 if number == "r" else (24 if number == "b" else 0.0)

但是,如果您需要两个以上的替代方案,那么建议的字典会更好.

您还可以避免出现以下异常:

def heat(number):
    m = { "r" : 12,
          "b" : 24 }

    return m[number] if number in m else 0.0
上一篇:如何使用字典值在Python中进行正则表达式替换,其中键是同一字符串中的另一个匹配对象


下一篇:524. 通过删除字母匹配到字典里最长单词