首页 > 解决方案 > 如果存在其他外部键,如何获取带有映射键的新列表?

问题描述

输入:

type DeviceType = Any
val rh: Map[(String, String), String] = Map(("ss", "ex-ss") -> "MobileType", ("ud", "ex-ud") -> "DesktopType")
val lh: Map[String, DeviceType] = Map("ex-ss" -> 1, "ex-ud" -> "A@F4CC", "ex-zip" -> 30052)

预期输出: val res:Map[String, DeviceType] = Map("ss" -> 1, "ud" -> "A@F4CC", "ex-zip" -> 30052)

标签: scala

解决方案


所以,基本上你需要再创建一张地图来存储元组之间的连接,从rh地图。

请参阅下面的代码以获取更多详细信息:

// Create device synonyms index, for instance: "ex-ss" -> "ss"
val deviceSynonyms: Map[String, String] = rh.keys.map(_.swap).toMap
val res: Map[String, DeviceType] = lh.map {
    case (deviceName, deviceType) => deviceSynonyms.getOrElse(deviceName, deviceName) -> deviceType
}

这将产生预期的结果:

Map(ss -> 1, ud -> A@F4CC, ex-zip -> 30052)

推荐阅读