scala中的序列转换

时间:2014-07-02 14:58:28

标签: scala functional-programming

在scala中,有一种转换此序列的简单方法

Seq(("a", 1), ("b", 2), ("a", 3), ("c", 4), ("b", 5))

进入此Seq(("a", 4), ("b", 7), ("c", 4))

由于

2 个答案:

答案 0 :(得分:5)

我不确定你是否打算在元组的第二个纵坐标中String。假设Seq[(String, Int)],您可以使用groupBy按第一个纵坐标对元素进行分组:

Seq(("a", 1), ("b", 2), ("a", 3), ("c", 4), ("b", 5))
   .groupBy(_._1)
   .mapValues(_.map(_._2).sum)
   .toSeq

否则,您接下来会额外增加.toInt

答案 1 :(得分:0)

这是解压缩和使用元组中第二项的另一种方法。

[System.Web.Services.WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static string CreateForm(object data)
{
    Repository repo = new Repository();
    repo.Insert(data);
}

以上代码详情:

val sq = sqSeq(("a", 1), ("b", 2), ("a", 3), ("c", 4), ("b", 5))
sq.groupBy(_._1)
  .transform {(k,lt) => lt.unzip._2.sum}
  .toSeq