functools.map 字典的替代品
functools.map alternative for dictionaries
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() }
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() }