使用值从 Scala 中的映射中检索键

Asi*_*mov 5 dictionary scala

我目前在 scala 中有一个 Map,我需要检索与某个值匹配的键(或多个键!)。

我目前有一张学生和测试分数的地图,并且需要能够找到获得我输入的值的学生。

我的地图如下:

var students = Map(
 "Neil" -> 87
 "Buzz" -> 71
 "Michael" -> 95
)
Run Code Online (Sandbox Code Playgroud)

例如,我如何在这张地图中搜索找到得分为 71 分的学生,然后归还钥匙?

提前致谢。

Raj*_*r J 5

您可以使用下面的代码来实现此目的

students.filter(_._2 == 71).map(_._1)
Run Code Online (Sandbox Code Playgroud)


eas*_*sel 5

首先,您可能应该使用 aval而不是var,如下所示:val students = Map("Neil" -> 97, "Buzz" -> 71, "Michael" -> 95)

其次,您可能想要的方法称为find.

像这样的东西students.find(_._2 == 71).map(_._1)

这基本上是说,找到第一个值为(_._2 == 71)71 的 (key, value) 对,然后扔掉 value .map(_._1)。它将被包装在一个 Option 中,因为可能有 0 个匹配项。

也就是说,除非您有办法确保某个值永远不会出现多次,否则您可能会对 的结果感到更满意filter