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

How to transform Array[(String,List[String])] to Array[(String,String)]

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

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

我想 convert/transform 如下所示:

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

我正在使用 scala 2.10.4

使用平面地图:

 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,_))}

你可以试试:

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

用于理解的解决方案:

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)

也许你会喜欢这个:

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