我反击一个问题:
dic={'a':1,
'b':2,
'c':3}
def a_Item():
print('a')
def b_Item():
print('b')
def c_Item():
print('c')
def main(url):
for k,v in dic.items():
if url == v:
a_Item()
main(1)
如你所见,我有一本字典和三个功能。我有一个像url这样的参数。如果url = 1,我可以在dic中找到匹配的键(a),最后我想调用函数a_Item。
url = 1 - > key = a - > a_Item(功能)
url = 2 - > key = b - > b_Item(功能)
在上面的代码中,我只能调用函数a_Item()。谢谢!
答案 0 :(得分:2)
将字典保存到:
dic={1:a_Item,
2:b_Item,
3:c_Item}
然后简单地说:
dic[url]()
注意我正在使用呼叫运算符:()
另请注意,这并不等同于迭代键值对。如果这样做,您可以调用多个函数,因为值不必是唯一的。上面的方法只调用一个函数(如果有KeyError
则不调用。)
答案 1 :(得分:2)
试试这个:
dic={'a':[1, a_Item()],
'b':[2, b_Item()],
'c':[3, c_Item()]}
def a_Item():
print('a')
def b_Item():
print('b')
def c_Item():
print('c')
def main(url):
for v in dic:
if dic[v][0] == url:
dic[v][1]
main(1)
main(2)
main(3)
因为看起来你不需要字典中的a,b,c所以你可以创建1与a_Item()和2与b_Item()的直接组合所以更好的方法将是:
dic = {1:a_Item(),
2:b_Item(),
3:c_Item()}
def a_Item():
print('a')
def b_Item():
print('b')
def c_Item():
print('c')
def main(url):
for v in dic:
if v == url:
dic[v]
main(1)
main(2)
main(3)
答案 2 :(得分:1)
你可以这样使用globals()
:
def main(url):
for k,v in dic.items():
if url == v:
globals()[k + '_Item']()