我有以下定义:
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'返回一个值,这就是我想要的。有人可以向我解释这个方法吗?我也很困惑,地图和dictionnaires等。提前谢谢。
更新
好的,我得到了上面的例子,但是如果我有两个函数输入怎么办?
e.g。
def heat( temp, coeff )
我是否写回报:
return m(heat, coeff)
或者这不起作用吗?
答案 0 :(得分:2)
字典变体可以更简洁地写出来:
def heat(number):
return {'r':12,'b':24}.get(number,0.0)
答案 1 :(得分:1)
地图 和词典
一般来说,地图和词典是两个词,意思相同。它们在许多文献和许多人中互换使用。
调用maps ,因为这就是他们所做的。它们是映射到彼此的任意值对的集合。给定该对中的一个值(一个称为键),另一个(值)可以相对有效地获得。除了易于使用之外, maps 通常用于此效率目的。 (在您的示例中,“r”和“b”都是键,12和24是它们各自的值。)
严格地说,在Python中实现此功能的标准数据结构称为dict
(词典的缩写),他们在文档中用来描述概念的词是< em>映射对象。1
为了了解您如何返回“h”的值,您应该read up on how dicts
are used,因为m
就是这样。
答案 2 :(得分:0)
你也可以使用一个声明(如果你只有这个有限的选项):
def heat(number):
return 12 if number == "r" else (24 if number == "b" else 0.0)
但是,如果您需要2个以上的替代方案,那么您提出的字典会更好。
你也可以避免例外:
def heat(number):
m = { "r" : 12,
"b" : 24 }
return m[number] if number in m else 0.0