<分区>
我是 Scala 新手。
如果我有以下 List
:
val ls = List("a", "a", "a", "b", "b", "c")
如何创建一个 Map
来保存列表中每个元素的出现次数?
例如,上面列表的 Map
应该是:
Map("a" -> 3, "b" -> 2, "c" -> 1)
标签 scala collections
<分区>
我是 Scala 新手。
如果我有以下 List
:
val ls = List("a", "a", "a", "b", "b", "c")
如何创建一个 Map
来保存列表中每个元素的出现次数?
例如,上面列表的 Map
应该是:
Map("a" -> 3, "b" -> 2, "c" -> 1)
最佳答案
list.foldLeft(Map[String, Int]() withDefaultValue 0) { (m, x) => m + (x -> (m(x) + 1)) }
实际片段:
scala> val list = List("a", "a", "b", "c", "c", "a")
list: List[String] = List(a, a, b, c, c, a)
scala> list.foldLeft(Map[String, Int]() withDefaultValue 0) { (m, x) => m + (x -> (1 + m(x))) }
res1: scala.collection.immutable.Map[String,Int] = Map(a -> 3, b -> 1, c -> 2)
(直接基于Count occurrences of each element in a List[List[T]] in Scala)
关于scala - 创建 Map 为每个 List 元素保留 # of appearance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18794090/