115 votes

Scala comment puis-je compter le nombre d'occurrences dans une liste

val list = List(1,2,4,2,4,7,3,2,4)

Je veux le mettre en œuvre comme suit : list.count(2) (renvoie 3).

168voto

ohruunuruus Points 2972

Une version plus propre de l'une des autres réponses est :

val s = Seq("apple", "oranges", "apple", "banana", "apple", "oranges", "oranges")

s.groupBy(identity).mapValues(_.size)

donnant un Map avec un compte pour chaque élément dans la séquence d'origine :

Map(banana -> 1, oranges -> 3, apple -> 3)

La question demande comment trouver le décompte d'un élément spécifique. Avec cette approche, la solution nécessiterait de mapper l'élément souhaité à sa valeur de comptage comme suit :

s.groupBy(identity).mapValues(_.size)("apple")

140voto

xiefei Points 2979

les collections scala ont count : list.count(_ == 2)

53voto

KWA Points 115

J'ai eu le même problème que Sharath Prabhal, et j'ai obtenu une autre solution (pour moi plus claire) :

val s = Seq("apple", "oranges", "apple", "banana", "apple", "oranges", "oranges")
s.groupBy(l => l).map(t => (t._1, t._2.length))

En conséquence :

Map(banana -> 1, oranges -> 3, apple -> 3)

31voto

elron Points 159
list.groupBy(i=>i).mapValues(_.size)

donne

Map[Int, Int] = Map(1 -> 1, 2 -> 3, 7 -> 1, 3 -> 1, 4 -> 3)

Notez que vous pouvez remplacer (i=>i) par la fonction identity intégrée :

list.groupBy(identity).mapValues(_.size)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X