如何将 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)
假设我按以下方式进行映射:
[ (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)