functools.map alternative for dictionaries



TL;博士

迭代 +dict的就地修改与functools.map一样list

抽象

您可能知道,list对象都可以使用functools.map轻松地在一行中处理,它采用lambdalist(或多个)作为参数。 问题是,我想对dict对象做同样的事情,因为我目前拥有的是:

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]

我真的不喜欢现在这样for

map 实际上并没有进行就地修改,它与列表理解做同样的事情。

对于字典,你可以这样做:

items = { k:[power(i,3) for i in v] for k,v in items.items() }

最新更新