gpt4 book ai didi

dictionary - 比较GO中 map 的值(value)

转载 作者:数据小太阳 更新时间:2023-10-29 03:33:22 24 4
gpt4 key购买 nike

我必须比较类型为“map[string]float64”的两个映射的值(不是键)。

map 的内容是:map1[ABCD:300 PQRS:400]map2[ABCD:30 PQRS:40]不,我会检查 if value(map1)/value(map2) > = 1(比如 300/30=10>1),然后做点什么。

我怎样才能在 GO 中做到这一点?TIA。

我试过这样的:

for key := range m2{
for k := range m1{
temp := m1[k] / m2[key]
fmt.Println("temp*******", temp)
}
}

最佳答案

Playground working example

分解主循环:

for key, value1 := range m1 {
if value2, ok := m2[key]; ok {
fmt.Printf("%f / %f = %f\n", value1, value2, value1/value2)
if value2 != 0 && value1/value2 > 1 {
fmt.Println("Greater than 1!")
} else {
fmt.Println("Not greater than 1!")
}
}
}

首先,我使用 range 为 m1 中的每个条目提取值和键,因为我们需要两者。

其次,使用 value2, ok := m2[key]comma ok 语法,我都找出了第二张 map 的关联值是什么对于给定的键,并确保当周围的 if ... 时该映射条目存在;好的。根据您对问题的描述,没有必要检查第二张 map 的每个元素,只需检查与第一张 map 共享 key 的元素。我们进行此检查很重要,因为 go 在检查映射中是否存在不存在的键时不会抛出错误,它只是默默地返回变量的零值——在这种情况下,这可能意味着稍后除以零。

第三,好吧,只是一些格式化的打印行来帮助查看发生了什么,真正的果汁是非常简单的 if value1/value2 > 1 语句。请注意,我还在 playground 链接中添加了一些不满足要求的 map 条目,以帮助证明该行为是正确的。

另一个答案中链接的“go maps in action”博客文章确实是在 go 中使用 map 的重要来源。

关于dictionary - 比较GO中 map 的值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32858611/

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