dict匹配功能

时间:2017-03-04 04:21:18

标签: python function dictionary

我反击一个问题:

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()。谢谢!

3 个答案:

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