我有一个名为eval_params
的字典,它看起来像这样:
In [1]: eval_params
Out[1]:
{1: {'CLF': 'EMNB',
'EM': 'False',
'FEA': 'words',
'NGRAM': '1-1',
'PDS': 'T',
'PSE': '-',
'RN': '1dnf',
'STEM': 'False',
'UDS': 'He'},
2: {'CLF': 'EMNB',
'EM': 'False',
'FEA': 'words',
'NGRAM': '1-1',
'PDS': 'TS',
'PSE': '-',
'RN': '1dnf',
'STEM': 'False',
'UDS': 'He'},
3: {'CLF': 'EMNB',
'EM': 'False',
'FEA': 'words',
'NGRAM': '1-1',
'PDS': 'T',
'PSE': '-',
'RN': '1dnf',
'STEM': 'False',
'UDS': 'Te'}}
我必须使用内置函数filter
对其使用某些谓词来筛选此词典:
我的问题是我不想硬编码pred_func
中的谓词,而是动态地将它们传递给pred_func
。当前的pred_func
如下所示:
def pred_func((i, d)):
# I have to hard-code the parameters to filter by. I don't want that
return d['PDS'] == 'T' and d['UDS'] = 'Te'
相反,我想要的是:
def pred_func((i, d), predicates):
vals = []
# predicates would be a dictionary such as {'PDS':'T', 'UDS':'Te'}
for param, val in predicates.iteritems():
vals.append(d[param] == val)
return all(vals)
然而,据我所知,我不能向谓词函数传递额外的参数,那么如何才能以优雅的方式完成我想要的任务呢?有什么想法吗?在
创建一个higher-order function [wikipedia],即返回函数的函数。例如:
pred_func
现在是一个函数,返回一个接受元组作为参数的函数(就像原来的pred_func
函数一样)。在然后可以使用以下命令调用函数:
^{pr2}$相关问题 更多 >
编程相关推荐