Samiksha Manwani
Samiksha Manwani

Reputation: 1

How to pass arguments in lambda function in python

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

This line is giving me error, "lambda 1 missing positional argument: v". Anyone can help me out to figure this error.

Upvotes: 0

Views: 139

Answers (1)

Dan D.
Dan D.

Reputation: 74685

In Python 2, it is possible to fix your program with argument tuple unpacking:

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

This was removed in Python 3. But the following remains:

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

However, you really should use a dictionary comprehension:

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

Or if you prefer the dict constructor for 2.5 compatibility.

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

Upvotes: 1

Related Questions