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() }