将多个功能映射到键的字典-Python

时间:2018-07-23 18:03:10

标签: python dictionary functional-programming

我了解我们可以将字典映射与以下功能一起使用:

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

2 个答案:

答案 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()