如何在python中传递lambda函数中的参数

时间:2016-12-09 07:02:47

标签: python lambda

freq_items = dict(filter(lambda k,v : float(v)/float(self.total_items) >= self.support, items_list.items()))

这一行给了我错误,“lambda 1缺少位置参数:v”。任何人都可以帮我解决这个错误。

1 个答案:

答案 0 :(得分:1)

在Python 2中,可以使用参数元组解包修复程序:

freq_items = dict(filter(lambda (k,v) : float(v)/float(self.total_items) >= self.support, items_list.items()))

这在Python 3中已被删除。但以下内容仍然存在:

freq_items = dict(filter(lambda item: float(item[1])/float(self.total_items) >= self.support, items_list.items()))

但是,你真的应该使用词典理解:

freq_items = {k:v for k,v in items_list.items() if float(v)/float(self.total_items) >= self.support}

或者,如果您更喜欢2.5 {兼容性的dict构造函数。

freq_items = dict(k,v for k,v in items_list.items() if float(v)/float(self.total_items) >= self.support)