gpt4 book ai didi

scala - 如何使用第一个 map 中的键和合并值将两个 map 合并成一个?

转载 作者:行者123 更新时间:2023-12-01 07:11:16 24 4
gpt4 key购买 nike

如何从两个 map map 创建新 map ,以便生成的 map 仅包含键相同的匹配项并组合内部 map 。

Iterable[Map[String, Map[String,Float]]

例子:
val map1 = Iterable(Map(
1 -> Map(key1 -> val1),
2 -> Map(key2 -> val2),
3 -> Map(key3 -> val3)
))

val map2 = Iterable(Map(
1 -> Map(key11 -> val11),
3 -> Map(key33 -> val33),
4 -> Map(key44 -> val44),
5 -> Map(key55 -> val55)
))

我希望生成的 map 如下:
Map(
1 -> Map(key1 -> val1, key11 -> val11),
3 -> Map(key3 -> val3, key33 -> val33)
)

最佳答案

更新:我真的不明白你的编辑是关于 Iterable s 表示,或您评论中的错误,但这里有一个完整的工作示例,带有 String s 和 Float s:

val map1: Map[Int, Map[String, Float]] = Map(
1 -> Map("key1" -> 1.0F),
2 -> Map("key2" -> 2.0F),
3 -> Map("key3" -> 3.0F))

val map2: Map[Int, Map[String, Float]] = Map(
1 -> Map("key11" -> 11.0F),
3 -> Map("key33" -> 33.0F),
4 -> Map("key44" -> 44.0F),
5 -> Map("key55" -> 55.0F))

val map3: Map[Int, Map[String, Float]] = for {
(k, v1) <- map1
v2 <- map2.get(k)
} yield (k, v1 ++ v2)

更新以回答您在下面的问题:拥有一个 map 列表并没有多大意义,每个 map 都包含一个映射。您可以使用 reduceLeft 轻松地将它们组合成一张 map 。 :
val maps = List(
Map(1216 -> Map("key1" -> 144.0F)),
Map(1254 -> Map("key2" -> 144.0F)),
Map(1359 -> Map("key3" -> 144.0F))
)

val bigMap = maps.reduceLeft(_ ++ _)

现在你有一个大的整数映射到字符串到浮点数的映射,你可以插入我上面的答案。

关于scala - 如何使用第一个 map 中的键和合并值将两个 map 合并成一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9641102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com