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)))
我想知道如何在 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)))