dict匹配函数

2024-04-20 03:19:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我提出一个问题:

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)

如你所见,我有一本字典和三个函数。我在main中有一个类似url的参数。如果url=1,我可以在dic中找到匹配的键(a),最后我想调用函数a\u Item。你知道吗

url=1-->;key=a-->;a项(函数)

url=2-->;key=b-->;b\u项(函数)

在上面的代码中,我只能调用函数a\u Item()。谢谢!你知道吗


Tags: key函数ingturlforif字典
3条回答

你可以这样使用globals()

def main(url): 
    for k,v in dic.items():
        if url == v:
            globals()[k + '_Item']()

保留有关函数的字典:

dic={1:a_Item,
    2:b_Item,
    3:c_Item}

然后简单地说:

dic[url]()

注意,我使用的是call操作符:()

还要注意的是,这并不完全等同于对键值对进行迭代。如果这样做,您可以调用多个函数,因为值不必是唯一的。上面的方法只调用一个函数(如果有KeyError,则不调用)。你知道吗

试试这个:

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\u Item()的直接组合,2和b\u 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) 

相关问题 更多 >