scala中的列表列表

List of List in scala

我想知道如何在 reduce 操作的结果中创建一个 List of List。

我有例如这行

1,2,3,4
0,7,8,9
1,5,6,7
0,6,5,7

我想要这样的东西

1, [[2,3,4],[5,6,7]]
0, [[7,8,9],[6,5,7]]

这是我的代码

val parsedData = data.map { line =>
    val parts = line.split(",")
    val label = Integer.parseInt(parts(0))
    (label, List(Integer.parseInt(parts(1)), Integer.parseInt(parts(2)), Integer.parseInt(parts(3)))
}

有了这个我得到

1, [2,3,4]
0, [7,8,9]
1, [5,6,7]
0, [6,5,7]

但是如果我将 reduceByKey 操作与 List.concat(_,_) 一起使用,我会得到一个包含所有项目的单个列表。

parsedData.reduceByKey(List.concat(_,_))

我想要一个 List 的 List,减去 Key。

还有什么我不知道的操作吗?

非常感谢您的帮助!

我不确定这是否是您要找的 concat。

你能试试吗:

parsedData.reduceByKey(_ :: _ :: Nil)

这应该从字面上创建一个包含您的元素的新列表

这是一个工作示例:

val data = "1,2,3,4\n0,7,8,9\n1,5,6,7\n0,6,5,7".split("\n")

val parsedData = data.map{ line =>
  val parts = line.split(",")
  val label = Integer.parseInt(parts(0))
  (label, List(Integer.parseInt(parts(1)), Integer.parseInt(parts(2)), Integer.parseInt(parts(3))))
}.toList
//parsedData: List[(Int, List[Int])] = List((1,List(2, 3, 4)), (0,List(7, 8, 9)), (1,List(5, 6, 7)), (0,List(6, 5, 7)))

parsedData.groupBy(_._1).mapValues(_.map(_._2))
// Map(1 -> List(List(2, 3, 4), List(5, 6, 7)), 0 -> List(List(7, 8, 9), List(6, 5, 7)))