gpt4 book ai didi

algorithm - 如何使用第一个 map 的值检索嵌套 map 的值?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:05:59 25 4
gpt4 key购买 nike

我有一个 Map[String, String] 类型的条目映射和一个 Map[String, Map[String, String]] 类型的查找映射。我的目标是在第一张 map 中查找第二张 map 中的匹配项,一旦我找到关键匹配项,我就必须将第一张字典中的值替换为第二张字典中的查找值。这个例子会把事情弄清楚。

到目前为止,我已经想出了一个算法,但我得到了一些奇怪的答案 Some(e) 和 Some(t)。

第一个入口图如下:

val entries = Map("fruit" -> "aaa", "animal" -> "bbb", "person" -> "jjj")

第二张 map 如下:

val lookup = Map("fruit" -> Map("ccc" -> "orange", "aaa" -> "apple"),
"animal" -> Map("zzz" -> "dog", "bbb" -> "cat"))

我期望的结果如下(注意:“person”正确地没有包含在结果中,因为没有匹配项):

val result = Map("fruit" -> "apple", "animal" -> "cat")

我想出的算法如下:

val res = for{ (k, ev) <- entries 
lv <- lookup.get(k).get(ev)} yield (k, lv)

这个算法给出了以下结果,我不知道为什么:

Map(fruit -> e, animal -> t)

e 和 t 是从哪里来的?

最佳答案

将其分解成多个组成部分。

for {
(k,v1) <- entries
submap <- lookup.get(k)
v2 <- submap.get(v1)
} yield (k,v2)
//res0: immutable.Map[String,String] = Map(fruit -> apple, animal -> cat)

不确定 e 在哪里和 t来自您的错误输出。


好的,我明白了。 lv <- lookup.get(k).get(ev)正在遍历 "apple" 的每个字母和 "cat"分别,但是因为 Map 中的每个键只能有一个键->值对, 只保留最后一个字母。

关于algorithm - 如何使用第一个 map 的值检索嵌套 map 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56846170/

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