繁体   English   中英

Scala如何将Seq of Pair转移到地图?

[英]How Scala transfers a Seq of Pair to a Map?

我有一些价值如下:

Seq((1, Some("one")), (1, Some("two")), (1, Some("three")), (2, Some("four")), (2, Some("five")), (3, None))

什么是转换为的最佳方式:

Map(1 -> Seq("one", "two", "three"), 2 -> Seq("four", "five"), 3 -> Seq())

试试这个:

val map = orig_data.groupBy(_._1).mapValues(_.flatMap(_._2))

@Shadowlands的类似方法,但是使用for comprehension,从分组中提取和映射键和列表值,就像这样

for ( (k,xss) <- xs.groupBy(_._1) ) yield k -> xss.flatMap(_._2)

使用fold另一个解

scala> seq.foldLeft(Map.empty[Int, Seq[String]].withDefaultValue(Nil)) {
     |   case (m, (k, v)) => m.updated(k, m(k)++v)
     | }
res1: scala.collection.immutable.Map[Int,Seq[String]] = 
          Map(1 -> List(one, two, three), 2 -> List(four, five), 3 -> List())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM