gpt4 book ai didi

dictionary - 如何检查一个 map 是否可以在golang中部分匹配另一个 map

转载 作者:IT王子 更新时间:2023-10-29 02:05:14 24 4
gpt4 key购买 nike

假设,我有两个 map[string]([]string)

 MAP1 := map[string]([]string) {
"User" : []string{"11", "33"},
"Type" : []string{"A"},
}


MAP2 := map[string]([]string) {
"User" : []string{"11", "17"},
"Type" : []string{"B"},
}

这里,MAP1 部分匹配 MAP2

User = 11 is in both map

如何以简单的方式检查它?

最佳答案

对于 example :

package main

import "fmt"

func Max(x, y int) int {
if x > y {
return x
}
return y
}

func Intersect(as, bs []string) []string {
i := make([]string, 0, Max(len(as), len(bs)))
for _, a := range as {
for _, b := range bs {
if a == b {
i = append(i, a)
}
}
}
return i
}

func main() {

MAP1 := map[string][]string{
"User": []string{"11", "33"},
"Type": []string{"A"},
}

MAP2 := map[string][]string{
"User": []string{"11", "17"},
"Type": []string{"B"},
}

MAP3 := make(map[string][]string)

for k, _ := range MAP1 {
MAP3[k] = Intersect(MAP1[k], MAP2[k])
}

fmt.Println(MAP3) // MAP3 contains commonalities between MAP1 and MAP2
}

请注意,此解决方案未利用任何潜在的性能优化(例如假设字符串数组将以某种方式排序,否则),因此运行时性能为 O(m• n2),其中:

  • m 是映射中键的数量(假设两个映射相同)
  • n 是每个字符串 slice 中的元素数(假设两个对应的映射条目相同)

还可以,但不是很好。

关于dictionary - 如何检查一个 map 是否可以在golang中部分匹配另一个 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31066043/

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