映射到数组列表

时间:2016-03-29 15:28:56

标签: scala

我是scala / spark的新手,所以请你帮我解决一下:

我有这个:

val list= Array(("a",(1,2,3)),("b",(1,2))

我希望输出:

(a,1),(a,2),(a,3),(b,1),(b,2)

我能做些什么呢。

2 个答案:

答案 0 :(得分:1)

您可以使用productIterator迭代元组。以下结果为List[(String, Any)] = List((a,1), (a,2), (a,3), (b,1), (b,2))。不确定是否有一种很好的方法可以推断出所有元组中的项目类型都是Integer而不是Any

val list: Array[(String, Product)]= Array(("a",(1,2,3)),("b",(1,2)))

(for {
  i <- list.iterator
  n <- i._2.productIterator
} yield {
  (i._1, n)
}).toList

答案 1 :(得分:0)

你只需要这样做:

list.flatMap(t => t._2.productIterator.map(n => t._1->n))

我个人不会使用动态元组:/我会使用整数列表或其他东西。