Scala 如何在映射中使用“减少到和”列表
我已经生成了以下类型的映射Scala 如何在映射中使用“减少到和”列表,scala,Scala,我已经生成了以下类型的映射 immutable.Map[Int,List[Double]] Map( 1 -> List(1.02), 2 -> List(0.42, 6.88)) 我无法理解如何访问映射中的List()并使用reduce对元素求和 myMap.reduce(???) 可以使用.Map()函数迭代贴图。每次迭代都会得到一个键和一个值,并且需要返回一个键和一个值。在您的情况下,键将是一个整数(1,2),我们可以直接通过它。值将是一个双精度列表,我们可以使用内置的求
immutable.Map[Int,List[Double]]
Map(
1 -> List(1.02),
2 -> List(0.42, 6.88))
我无法理解如何访问映射中的List()并使用reduce对元素求和
myMap.reduce(???)
可以使用
.Map()
函数迭代贴图。每次迭代都会得到一个键和一个值,并且需要返回一个键和一个值。在您的情况下,键将是一个整数(1
,2
),我们可以直接通过它。值
将是一个双精度列表,我们可以使用内置的求和。求和
:
myMap.map { case (key, value) => (key, value.sum) }
例如:
scala> val myMap = Map(1 -> List(1.02), 2 -> List(0.42, 6.88))
myMap: scala.collection.immutable.Map[Int,List[Double]] = Map(1 -> List(1.02), 2 -> List(0.42, 6.88))
scala> myMap.map { case (key, value) => (key, value.sum) }
res0: scala.collection.immutable.Map[Int,Double] = Map(1 -> 1.02, 2 -> 7.3)
您可以将.sum
替换为.reduce(+)
并得到相同的答案。您可以使用.Map()
函数迭代映射。每次迭代都会得到一个键和一个值,并且需要返回一个键和一个值。在您的情况下,键将是一个整数(1
,2
),我们可以直接通过它。值
将是一个双精度列表,我们可以使用内置的求和。求和
:
myMap.map { case (key, value) => (key, value.sum) }
例如:
scala> val myMap = Map(1 -> List(1.02), 2 -> List(0.42, 6.88))
myMap: scala.collection.immutable.Map[Int,List[Double]] = Map(1 -> List(1.02), 2 -> List(0.42, 6.88))
scala> myMap.map { case (key, value) => (key, value.sum) }
res0: scala.collection.immutable.Map[Int,Double] = Map(1 -> 1.02, 2 -> 7.3)
您可以将.sum
替换为.reduce(+)
并得到相同的答案。您是否阅读了使用映射的基本知识,例如访问值?我建议从那里开始。如果您有,您希望了解说明中的哪些内容?我知道我可以访问单个键myMap。(1)。减少(+uu),但是如何遍历整个映射并将列表[]转换为表示总和的双精度?例如,新映射为map[Int,Double],您是否阅读了使用map
的基础知识,例如访问值?我建议从那里开始。如果您有,您希望了解说明中的哪些内容?我知道我可以访问单个键myMap。(1)。减少(+uu),但是如何遍历整个映射并将列表[]转换为表示总和的双精度?例如,新的映射将是map[Int,Double]谢谢,如果我使用value,是否有性能差异。reduce(+uu)将列表中的值相加?@ext2008:您在尝试时测量了什么性能差异?谢谢,如果我使用value,是否有性能差异。reduce(+u)总结列表中的值?@ext2008:您在尝试时测量了什么性能差异?