J'ai une liste de carte [String, Double], et je voudrais fusionner leur contenu en une seule carte [String, Double]. Comment dois-je faire cela de manière idiomatique? J'imagine que je devrais être capable de le faire avec un pli. Quelque chose comme:Scala: comment fusionner une collection de cartes
val newMap = Map[String, Double]() /: listOfMaps { (accumulator, m) => ... }
En outre, je voudrais gérer les collisions de clés d'une manière générique. Autrement dit, si j'ajoute une clé à la carte qui existe déjà, je devrais pouvoir spécifier une fonction qui renvoie un double (dans ce cas) et prend la valeur existante pour cette clé, plus la valeur que j'essaie d'ajouter . Si la clé n'existe pas encore dans la carte, il suffit de l'ajouter et sa valeur non modifiée.
Dans mon cas spécifique, je voudrais construire une seule carte [Chaîne, Double] telle que si la carte contient déjà une clé, alors le Double sera ajouté à la valeur de carte existante.
Je travaille avec des cartes mutables dans mon code spécifique, mais je suis intéressé par des solutions plus génériques, si possible.
C'est exactement comment j'essayais de le faire initialement. Je n'ai pas pensé à placer la compréhension à l'intérieur - je m'habitue toujours à les utiliser comme ça, mais c'est logique. Dans ce cas, je peux voir comment cela ressemble beaucoup à la liste de Python, avec laquelle je suis beaucoup plus à l'aise. De même que l'utilisation de l'expression if-bearing-bearing dans l'appel à. +(). – Jeff
propre réponse. kudos –