问题描述
TL;DR
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() }