golang中如何找出map 中值重复的 item,并删除

现在有这样一个map

map[2.jpg:[1.jpg 3.jpg 2.jpg] 1.jpg:[1.jpg 2.jpg 3.jpg] 4.jpg:[4.jpg 5.jpg] 3.jpg:[2.jpg 3.jpg 1.jpg] 5.jpg:[5.jpg 4.jpg]]

我想做到当value相同时,删除掉该记录,但要保留一个记录

阅读 9k
3 个回答
        for k, v := range m {
            for k1, v1 := range m {
                if k == k1 {
                    continue
                }
                if reflect.DeepEqual(v, v1) {
                    delete(m, k1)
                }
            }
        }

可以使用两个map来处理。

map1[key] = value
map2[md5(value)] = key

插入时,先判断一下 map2(md5(value)) 是否存在,如果存在,则相同的值已存在,就不要插入了。

这样即可实现,插入后的结果中,没有value相同的项目。

PS. 以上是伪代码,仅是思路说明。

楼上正解,其实如果键值是可比较数据类型,可以不用reflect.DeepEqual()方法,直接==比较即可

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题