2016-08-14 77 views
-1

想获得分层turples的名单列表的列表清单,如何斯卡拉压扁turples

val folders =List((1, (List(212, 2asdad), List(213, 2asdas))), 
        (2, (List(112, asasd), List(113, asasd6))), 
        ... 
        ) 

val ouput = folders.zipWithIndex.map(sc => sc._1._2.map((sc._2, sc._1._1, _))).foreach(println) 

//output = List((1, 212, 2asdad), (1, 213, 2asdas)), 
//   List((2, 112, asasd), (2, 113, asasd6)), 

,但我感兴趣的是得到一个分层列表这样

//output = List((1, 212, 2asdad), (1, 213, 2asdas), 
//     (2, 112, asasd), (2, 113, asasd6)), 

任何想法如何解决这个问题?

感谢

+0

你的代码是无效的...'['和']'都是仿制药。你的意思是'val folders = List((1,List((212,2asdad),(213,2asdas))),(2,List((112,asasd),(113,asasd))),... '或'val folders = List((1,(212,2asdad),(213,2asdas)),(2,(112,asasd),(113,asasd)),...' –

+0

@GáborBakos - I fixed感谢 –

回答

1

看来你想要的是采取型List[(Int, List[(Int, Symbol)])]和变换一种类型的List[(Int, Int, Symbol)]。如果你需要什么,然后下面的工作:

scala> val a = List((1,List((2,'a), (3,'b))),(2,List((3,'c), (4,'d)))) 
a: List[(Int, List[(Int, Symbol)])] = List((1,List((2,'a), (3,'b))), (2,List((3,'c), (4,'d)))) 

scala> a.flatMap(x => x._2.map(y => (x._1, y._1, y._2))) 
res18: List[(Int, Int, Symbol)] = List((1,2,'a), (1,3,'b), (2,3,'c), (2,4,'d)) 

只要改变Symbol型到你所需要的。

+0

谢谢你完美的作品,只是一些小修复 a.zipWithIndex.flatMap(x => x._1._2.map((x._2,x._1._1, _)))的foreach(的println) –

0

感谢@ Mika'il答案,这里是解决方案

val folders =List((1, (List(212, 2asdad), List(213, 2asdas))), 
       (2, (List(112, asasd), List(113, asasd6))), 
       ... 
       ) 

folders.zipWithIndex.flatMap(x => x._1._2.map((x._2, x._1._1,_))).foreach(println) 

输出

List((1, 212,2asdad), (1, 213, 2asdas), (2, 112, asasd), (2,113,asas6))