我了解我们可以将字典映射与以下功能一起使用:
def call_functions(input)
def function1():
print "called function 1"
def function2():
print "called function 2"
def function3():
print "called function 3"
tokenDict = {"cat":function1,
"dog":function2,
"bear":function3}
return tokenDict[input]()
但是,如果我们想在字典中将两个函数设置为值怎么办?喜欢:
tokenDict = {"cat":function1, function2
"dog":function2
....
我尝试使用"cat":[function1, function2]
之类的列表,但是有更简单的方法吗?
当我调用它时,我希望它先执行function1
然后执行function2
答案 0 :(得分:4)
根据泰勒(Tyler)的评论,始终使用列表以保持一致性。然后使用列表推导输出在列表中应用每个功能的结果。 这是一个工作示例:
def call_functions(i, val=3):
def function1(x):
return x*1
def function2(x):
return x*2
def function3(x):
return x*3
tokenDict = {"cat": [function1, function2],
"dog": [function2],
"bear": [function3]}
return [f(val) for f in tokenDict[i]]
call_functions('cat') # [3, 6]
call_functions('dog') # [6]
call_functions('bear') # [9]
旁注:您不应遮挡内置input
。
答案 1 :(得分:1)
“将两个功能分配给一个键”是什么意思?为此,将两个任何东西分配给一个字典键是什么意思?您需要以某种方式将它们捆绑在一起,因为字典的重点是每个键正好对应于一个值(如果该值是捆绑,那就这样吧)。另一个答案涵盖了这一点。
如果您希望同时执行这两个函数,并且在不久的将来不打算对这种方法进行太多更改,则还可以使用只按顺序调用它们的包装函数:
def function4:
function1()
function2()