我如何计算地图中元素的出现次数?
例如
val myMap = Map("word1" -> "foo", "word3" -> "word4", "word5" -> "foo")
myMap contains "foo" count //???
// returns 2
答案 0 :(得分:11)
您可以将count
与谓词一起使用:
myMap.count({ case (k, v) => v == "word1" })
可替换地:
myMap.values.count(_ == "word1")
甚至:
myMap.count(_._2 == "word1") // _2 is the second tuple element
注意:这是值,而不是键。钥匙是独一无二的。
答案 1 :(得分:1)
通常,如果要计算Map
中的出现次数,可以按值进行分组,然后将分组的子映射转换为其大小
scala> val occurrences = myMap groupBy ( _._2 ) mapValues ( _.size )
occurrences: scala.collection.immutable.Map[String,Int] = Map(word4 -> 1, foo -> 2)
如果您需要为每个条目计数,而不仅仅是单个值,这很方便。 否则@ Ven的解决方案更有效率
答案 2 :(得分:0)
另一种方式,
myMap.values.filter { _ == "foo" }.size