TL;博士
迭代 +dict
的就地修改与functools.map
一样list
抽象
您可能知道,list
对象都可以使用functools.map
轻松地在一行中处理,它采用lambda
和list
(或多个)作为参数。 问题是,我想对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() }