scala - 如何检查Map中是否存在键值对组合

标签 scala dictionary scala-collections

我正在尝试解决一个问题,我想检查 Map 中是否存在键值对 我有这样的 map :

val codemap = new Map[String, List[String]]

我想用静态值制作 map

val codeMap = Map(
  "Asset Banking" -> List("audio","doc"),
  "avalon" -> List("adaptive-module", "ebook-plus")
)

我有 2 个动态变量:

val a: Option[String] = Option("Asset Banking")
val b: Option[String] = Option("audio")

我想检查是否存在 a 和 B 的组合:

我能想到的逻辑是

    if(codemap.key.contains (a))
    {
      if(codemap.values exist for above key)
         then do something 

     }else
     {
       do something
     }

这是解决这个问题的好方法吗? 这是流数据 a,b 是来自流的字段 我想根据 a,b

的值填充表中的第三个字段,称为 c

a,b 需要是将存储在 map 中的某种组合。

最佳答案

尝试

(for {
  k <- a
  v <- b
  l <- codeMap.get(k)
} yield {
  l.contains(v)
}).getOrElse(false)

如果找到组合则输出 true,否则输出 false

关于scala - 如何检查Map中是否存在键值对组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57189190/

相关文章:

Scala Spark - 覆盖 Parquet 文件无法删除文件或目录

python - 从字典中删除 NoneTypes

python - 如何创建字典的 array.array ?

scala - 列表和集合的区别

scala - Flink 通用 Avro 解串器 : override getProducedType

scala - 我可以从模板(各种)生成 Scala 代码吗?

python - “列表”对象没有属性 'find'

scala - 根据 A 成员将 List[A] 转换为 List[Option[A]]

java - 在 Java 中使用 Scala map

java - Scala/Java 中的 HTTP URL 地址编码