我正在尝试编写一些检查两个列表(owned
和choose
)的代码,然后它会检查choose
中的项目是否在owned
中根据两个列表中的内容运行正确的函数。
def func1():
print("hello")
def func2():
print("hello2")
def func3():
print("hello3")
def func4():
print("hello4")
owned = ['a', 'b', 'c', 'd']
choose = ['a', 'c', 'f' ,'g']
funcs = {'a' : func1(), 'b' : func2(), 'c' : func3(), 'd' : func4}
for i in choose:
if i in owned:
funcs[i]()
我的问题是我无法使用funcs[i]()
,但我收到此错误:
funcs[i]()
TypeError: 'NoneType' object is not callable
这意味着我无法使用i
来调用这些函数。无论如何我能达到同样的目标吗?
答案 0 :(得分:0)
在dict funcs
中为每个键,方法名称(func1
,func2
,...)分配而不是函数调用,以便在字典中保留引用调用每个函数的结果。
funcs = {'a' : func1, 'b' : func2, 'c' : func3, 'd' : func4}
然后,只要满足if
条件,就调用它们:
for i in choose:
if i in owned:
funcs[i]()