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