scala - GroupBy 并根据 Scala 中的另一个地图转换地图
问题描述
我有一张地图如下
val typeMap = Map(
"mk1" -> "m",
"mk2" -> "m1",
"mk3" -> "m2",
"mk4" -> "d",
"mk5" -> "d2",
"mk6" -> "d2",
"mk7" -> "d3",
"mk8" -> "f4"
)
我有另一个定义组条件的地图
val groupMap = Map(
"m_type" -> List("m", "m1", "m2"),
"d_type" -> List("d", "d2", "d3"),
"c_type" -> List("c","c1")
)
我需要使用 groupMap 中的条件来选择 typeMap 的键,其值映射到 groupMap 中的类型以获取新的 Map 如下
Map(
"m_type" -> List("mk1", "mk2", "mk3"),
"d_type" -> List("mk4", "mk5", "mk6", "mk7"),
"c_type" -> List()
)
解决方案
如果groupMap
保证您在所有列表中只有唯一值,您可以创建一个反向映射并使用它按typeMap
值分组:
val reverseGroupMap = groupMap.flatMap{case (key, value) => value.map(_ -> key)}
typeMap
.groupBy{case (key, value) => reverseGroupMap(value)}
.map{case (sec, map) => sec -> map.values.toList}
推荐阅读
- git - git 冲突 - 有没有一种简单的方法来获得冲突部分之间的差异?
- css - 无法让引导行填充剩余高度
- php - 用户必须使用内置于 MustEmailVerify 的 laravel 注册后如何发送注册电子邮件
- azure-functions - local.settings.json 的自定义部分中的 EventHubTrigger 参数
- r - R - 找不到函数“cld”
- python - Django 模型 *** IndexError:列表索引超出范围
- python - 如何将 python 连接到 IBM DB2?
- c# - 如何取消 PreviewKeyDown 事件中的关键操作
- php - wordpress preg_match_all() 错误,使用 preg_replace_callback
- python - 按照视频教程进行操作,但出现很多错误