制作功能字典

Joh*_*hau 3 python python-3.x

我正在尝试制作lambda函数的字典。它应该能够获取键并处理绑定到该键的任何功能,并输出结果。

func_dict = {
    "func1" : (z = lambda x, y: x + y),
    "func2" : (z = lambda x, y: x * y)
} # include benchmark functions

func = input("Choose a function: ")
output = func_dict[func](3, 5)
print(output)
Run Code Online (Sandbox Code Playgroud)

该示例应该可以打印,8但是无法运行,并且简单地给我can't assign to dictionary display错误提示

    {
    "func1" : (z = lambda x, y: x + y),
    "func2" : (z = lambda x, y: x * y)
}
Run Code Online (Sandbox Code Playgroud)

(缩进似乎不是问题)如果可能的话,我想避免使用eval()exec()

Dev*_*ngh 9

您最初的尝试将引发语法错误。

相反,您希望将lambda函数的定义直接分配给键,如下所示

#The lambda function is assigned as a value of the keys
func_dict = {
    "func1" : lambda x, y: x + y,
    "func2" : lambda x, y: x * y
} 

func = input("Choose a function: ")
output = func_dict[func](3, 5)
print(output)
Run Code Online (Sandbox Code Playgroud)

输出将是

Choose a function: func1
8

Choose a function: func2
15
Run Code Online (Sandbox Code Playgroud)


Pay*_*ian 5

我认为你的分配z =是有问题的。

\n\n

尝试

\n\n
func_dict = {\n    "func1" : lambda x, y: x + y,\n    "func2" : lambda x, y: x * y\n} # include benchmark functions\n
Run Code Online (Sandbox Code Playgroud)\n\n

这对我有用:

\n\n
 \xe2\x9d\xaf\xe2\x9d\xaf\xe2\x9d\xaf python\nPython 3.6.7 (default, Dec  3 2018, 11:24:55)\n[GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.10.44.4)] on darwin\nType "help", "copyright", "credits" or "license" for more information.\n>>> func_dict = {\n    "func1" : lambda x, y: x + y,\n    "func2" : lambda x, y: x * y\n} # include benchmark functions... ... ...\n>>> func_dict["func1"](1,2)\n3\n
Run Code Online (Sandbox Code Playgroud)\n