dqm4977 2017-07-13 09:08
浏览 15

地图优化的嵌套范围循环

I am trying to collect all X and Y values from a Struct field and place Y values that belong to the same X value in a map, but it is nested 3 levels down.

Currently, I am using the following code:

topClasses := make([]TopClass, 0)
// populate topClasses Slice here

KeyValueMap := make(map[int][]int)   

for _, nestedClass := range topClasses {
    for _, nestedItem := range nestedClass.nestedList {
        for _, value := range nestedItem.Values {
            if _, found := KeyValueMap[value.X]; !found {
                KeyValueMap[value.X] = []int{value.Y}
            } else {
                KeyValueMap[value.X] = append(KeyValueMap[value.X], value.Y)
            }
        }
    }
}

Below is how the Structs are implemented:

type TopClass struct {
    nestedList []ListClass
}

type ListClass struct {
    Values []Value       
}

type Value struct {
    X int
    Y float64
}

Is there a more efficient way to do this using goroutines, channels, and/or waitgroups, etc. even though I am working with maps?

  • 写回答

1条回答 默认 最新

  • dongxian1699 2017-07-13 12:57
    关注

    The following code eliminates an extra map lookup in the case where the key is already present. It's also shorter.

    KeyValueMap := make(map[int][]int)
    
    for _, nestedClass := range topClass {
        for _, nestedItem := range nestedClass.nestedList {
            for _, value := range nestedItem.Values {
                KeyValueMap[value.X] = append(KeyValueMap[value.X], value.Y)
            }
        }
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值