scala - 如何在Scala中打破地图并在断点处保存密钥
问题描述
所以我在 scala 中有一个嵌套映射,Map[Int, Map[String, Double]]
需要遍历外部映射,并且每个 int 必须检查内部映射的键集是否包含特定字符串。如果不是,我必须在该点中断并返回包含失败的关键 other f 外部映射
例如
myMap = Map( (1, Map ("a" -> 13.0,"b" ->12.0 )),(2, Map ("a"-> 12.0, "b"-> 13.0)), (3, Map ("a" -> 11.0,"c" ->12.0 )),(4, Map ("e" -> 11.0,"d" ->12.0 )))
我想要第一次出现内部地图没有 key = b 所以基本上我上面的输出应该是 3
解决方案
一个不错的选择是使用collectFirst
:
myMap.collectFirst { case (k, v) if !v.contains("b") => k }
Option[Int]
这会Some(3)
在您的示例中返回。如果None
地图中所有元素的测试都失败了
这是您评论中附加问题的解决方案:
val testKeys = List("a", "b", "c").toSet
myMap.collectFirst { case (k, v) if !v.keys.forall(testKeys.contains) => k }
这给Some(4)
推荐阅读
- command-line - 单击子子命令
- mysql - MYSQL - JOIN TABLE 多次获取基于多个条件的单个值
- python - 如何更改 matplotlib 中的 xticks
- c# - 如何使用html和jquery通过asp.net核心api调用获取数据?
- javascript - 为什么firebase身份验证很慢?
- c++ - C++ 用 char & 解析参数
- design-patterns - 使用 := 和 = 进行赋值
- exif - Exif:我无法计算图像的方向
- php - 请求服务器时出错,收到带有响应正文的非成功 HTTP 代码 [302]:创建 EnvelopeWithHTTPIntfo
- reactjs - Next/React:有没有办法只加载一次数据?