You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Scala中Map[String, List[(String, Set[String])]]转为Map[String, Set[String]]

解决方案

场景1:每个List仅含一个元素

如果输入Map里的每个List都只有一个(String, Set[String])元素,且该元素的第一个字符串与Map的key一致(如示例中的ABC对应ABC),直接提取List首元素的Set部分即可:

val input: Map[String, List[(String, Set[String])]] = Map("ABC" -> List(("ABC", Set("X"))))
val output: Map[String, Set[String]] = input.map { case (key, list) =>
  key -> list.head._2
}

场景2:List包含多个元素,合并所有Set

如果List中有多个元素,需要将所有元素的Set合并为一个整体:

val input: Map[String, List[(String, Set[String])]] = Map("ABC" -> List(("ABC", Set("X")), ("DEF", Set("Y", "Z"))))
val output: Map[String, Set[String]] = input.map { case (key, list) =>
  key -> list.flatMap(_._2).toSet
}

场景3:List包含多个元素,仅保留与key匹配的元素的Set

如果需要筛选出List中第一个字符串与Map key相同的元素,再提取对应的Set:

val input: Map[String, List[(String, Set[String])]] = Map("ABC" -> List(("ABC", Set("X")), ("DEF", Set("Y"))))
val output: Map[String, Set[String]] = input.map { case (key, list) =>
  key -> list.collect { case (`key`, s) => s }.flatten.toSet
}

内容的提问来源于stack exchange,提问作者Naomi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 15:15:35