我构建了一个根据特定条件运行某个函数的脚本,我确信有更聪明的方法可以做到这一点。
我目前的代码是:
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个,它仍然可行,但我想知道是否有更好的方法来做到这一点。
答案 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