Pour votre cas particulier, vous pouvez utiliser ce
map.map { case (k, v) => k -> v.map(_._2).sum }
mais généralement en dessous de code fonctionne pour tout, même si les touches sont différentes
Ne GroupBy avec le premier élément du tuple et collapse alors la liste qui est la valeur de la carte obtenue après groupby
val list = Map("Mary")
list.groupBy(_._1).map { case (k, v) => v(0)._1 -> v.map(_._2).sum}
Scala REPL
scala> val list = map("Mary")
list: List[(String, Int)] = List(("Mary", 7065), ("Mary", 2604), ("Mary", 1414))
scala> list.groupBy(_._1).map { case (k, v) => v(0)._1 -> v.map(_._2).sum}
res11: Map[String, Int] = Map("Mary" -> 11083)
scala> val map = Map("Mary" -> List(("Mary", 7065), ("Mary", 2604), ("Mary", 1414)))
map: Map[String, List[(String, Int)]] = Map("Mary" -> List(("Mary", 7065), ("Mary", 2604), ("Mary", 1414)))
scala> val list = map("Mary")
list: List[(String, Int)] = List(("Mary", 7065), ("Mary", 2604), ("Mary", 1414))
scala> list.groupBy(_._1).map { case (k, v) => v(0)._1 -> v.map(_._2).sum}
res14: Map[String, Int] = Map("Mary" -> 11083)
Je suppose '7065 + 2604 + 1414' est un 'String'? –
J'ai fait quelques modifications sous l'hypothèse que c'était en fait la somme, excuses si je me trompe. –
Non, il devrait être un int, juste n'a pas pris la peine de les ajouter afin qu'il soit facile à comprendre – kevinz315