scala从列表和函数构建字典

时间:2016-01-06 14:02:47

标签: list scala dictionary

我有一个scala列表和一个函数:

mat.SetTo()

我想构建一个与每个元组相关联的字典。

结果val l = List((1,2), (3,4), (5,6)) def f(x:Int, y:Int) = x+y 应该保存在内存中,并且不会在每次调用时重新计算。我怎样才能做到这一点?在python中我会使用字典。

3 个答案:

答案 0 :(得分:2)

l.map(x => x -> (f _).tupled(x)).toMap

答案 1 :(得分:1)

Scala中类似于Python词典的是lua_newstate

Map

用法:

λ val resultsMap = Map(          // Create a map from a Seq of (key, value) pairs
                     l.zip(      // List(((1, 2), SOMETHING), ((3, 4), SOMETHING), etc.)
                       l.map((f _).tupled)  // Invoke `f` on each entry in `l`
                     ).toSeq : _*)
resultsMap: Map[(Int, Int), Int] = Map((1, 2) -> 3, (3, 4) -> 7, (5, 6) -> 11)

答案 2 :(得分:0)

使用for comprehension,我们可以提取元组值以及绑定每个元组以构建关联,如下所示,

for ( t@(a,b) <- l ) yield t -> f(a,b)

因此,从理解中对集合应用toMap,我们得到了所需的地图。在这种方法中,我们必须在元组中声明与我们希望应用于函数一样多的项目。