functools.map 替代字典

问题描述

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...