根据Python中的字典值运行某个函数

时间:2016-07-20 15:54:15

标签: python dictionary functional-programming

我构建了一个根据特定条件运行某个函数的脚本,我确信有更聪明的方法可以做到这一点。

我目前的代码是:

list_of_dicts= [{'brand':'a', 'url':'b'}, [{'brand':'b', 'url':'b'}]

for element in list_of_dicts:
    if element['brand'] == 'a':
        function_a(element['url'])
    elif element['brand'] == 'b']:
        function_b(element['url'])
    else:
        None

想象一下,我有2个品牌,大约7个,它仍然可行,但我想知道是否有更好的方法来做到这一点。

2 个答案:

答案 0 :(得分:2)

函数也是对象(sorta ...),所以你可以将brand键连接到这样的函数:

list_of_dicts= [{'brand':function_a, 'url':'b'}, [{'brand':function_b, 'url':'b'}]

然后只需使用键获取该功能:

for element in list_of_dicts:
    element['brand'](element['url'])

答案 1 :(得分:2)

您可以创建一个单独的dict存储功能,然后您可以使用品牌检索相应的功能:

list_of_dicts= [{'brand':'a', 'url':'b'}, {'brand':'b', 'url':'b'}]

def function_a(url):
    print('A ' + url)

def function_b(url):
    print('B ' + url)

funcs = {
    'a': function_a,
    'b': function_b
}

for element in list_of_dicts:
    func = funcs.get(element['brand'])
    if func:
        func(element['url'])

输出:

A b
B b