在scala中,有一种转换此序列的简单方法
Seq(("a", 1), ("b", 2), ("a", 3), ("c", 4), ("b", 5))
进入此Seq(("a", 4), ("b", 7), ("c", 4))
?
由于
答案 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