Iteration + in place modification for dict
as with functools.map
over list
As you might know, list
objects can easily be processed in a single line by using functools.map
, which takes a lambda
and a list
(or multiple) as parameters.
Problem is, I'd like to do the same for dict
objects since what I currently have is:
from functools import reduce
items = {
'a': list(range(20)),
'b': list(range(40))
}
power = lambda base, power: reduce(lambda a,b: a*b, [base for i in range(1,power)])
for key, value in items.items():
items[key] = [power(i, 3) for i in value]
I don't really like this for
as it currently is.
map does not actually do in place modification and it does the same thing as a list comprehension.
For a dictionary , you could do this:
items = { k:[power(i,3) for i in v] for k,v in items.items() }