如何将Array [(String,List [String])]转换为Array [(String,String)]

时间:2016-02-25 12:28:47

标签: scala scala-collections

假设我按以下方式进行映射:

[ (1,List[11,12,13]),(2,List[21,22,23]),(3,List[31,32,33]) ]

我想以下面显示的形式转换/转换它:

[ (1,11),(1,12),(1,13),(2,21),(2,22),(2,23),(3,31),(3,32),(3,33)]

我正在使用scala 2.10.4

4 个答案:

答案 0 :(得分:7)

使用flatMap:

 val xs = Array( (1,List(11,12,13)),(2,List(21,22,23)),(3,List(31,32,33)) )
 xs.flatMap{ case (s, xs) => xs.map((s,_))}

答案 1 :(得分:6)

您可以尝试:

array.flatMap { case (key, arr) => arr.map { key -> _ } }

答案 2 :(得分:3)

用于理解的解决方案:

val input = List((1,List(11,12,13)),(2,List(21,22,23)),(3,List(31,32,33)))

val output = for {
  tuple <- input
  element <- tuple._2
} yield (tuple._1, element)

答案 3 :(得分:2)

也许你想要这个:

for {
   (k,arr) <- arrOfTuple
   el <- arr
 } yield (k -> el)