Scala计算Map中元素的出现次数

goo*_*goo 5 scala

我如何计算地图中元素的出现次数?

val myMap = Map("word1" -> "foo", "word3" -> "word4", "word5" -> "foo")

myMap contains "foo" count //???
// returns 2
Run Code Online (Sandbox Code Playgroud)

Ven*_*Ven 11

你可以使用count谓词:

myMap.count({ case (k, v) => v == "word1" })
Run Code Online (Sandbox Code Playgroud)

或者:

myMap.values.count(_ == "word1")
Run Code Online (Sandbox Code Playgroud)

甚至:

myMap.count(_._2 == "word1") // _2 is the second tuple element
Run Code Online (Sandbox Code Playgroud)

注意:这是值,而不是键.钥匙是独一无二的

  • 使用 `_2` 元组语法通常被认为是“品味不佳”,但为了完整性我还是添加了它 - 谢谢。 (2认同)