Scala - 按键和映射值对列表进行分组
Scala - group list by key and map values
我正在尝试在 Scala 中做一些事情,
var tupleList = new ListBuffer[(String,List[String])]
val num1 = List("1","2")
val num2= List("3","4")
val num3= List("5","6")
tupleList+=(("Joe",num1))
tupleList+=(("Ben",num2))
tupleList+=(("Joe",num3))
**我想合并名称为 'Joe' 的两个列表,并创建一个数字列表: 1,2,5,6 。
所以我想使用groupByKey,但是如何分解这些值呢?
地图值?
在这种情况下如何使用 reduceLeft?
我试过类似的东西:
val try3 = vre.groupMapReduce(_._1)(_._2)(_ :: _)
谢谢!
原理问题在于使用 ::
而不是 :::
。
对于不可变集合,您的示例将如下所示:
val input =
("Joe" -> List("1","2")) ::
("Ben" -> List("3","4")) ::
("Joe" -> List("5","6")) ::
Nil
val result = input.groupMapReduce(_._1)(_._2)(_ ::: _)
print(result.mkString("{", ", ", "}"))
// Output:
// {Joe -> List(1, 2, 5, 6), Ben -> List(3, 4)}
我正在尝试在 Scala 中做一些事情,
var tupleList = new ListBuffer[(String,List[String])]
val num1 = List("1","2")
val num2= List("3","4")
val num3= List("5","6")
tupleList+=(("Joe",num1))
tupleList+=(("Ben",num2))
tupleList+=(("Joe",num3))
**我想合并名称为 'Joe' 的两个列表,并创建一个数字列表: 1,2,5,6 。 所以我想使用groupByKey,但是如何分解这些值呢? 地图值? 在这种情况下如何使用 reduceLeft?
我试过类似的东西:
val try3 = vre.groupMapReduce(_._1)(_._2)(_ :: _)
谢谢!
原理问题在于使用 ::
而不是 :::
。
对于不可变集合,您的示例将如下所示:
val input =
("Joe" -> List("1","2")) ::
("Ben" -> List("3","4")) ::
("Joe" -> List("5","6")) ::
Nil
val result = input.groupMapReduce(_._1)(_._2)(_ ::: _)
print(result.mkString("{", ", ", "}"))
// Output:
// {Joe -> List(1, 2, 5, 6), Ben -> List(3, 4)}