Golang Group按键合并数组值
发布时间:2020-12-16 09:22:19 所属栏目:大数据 来源:网络整理
导读:我正在尝试将多个数组的数组值与相同的键合并(按合并排序),是否有任何本机方式在Golang中转换此输入 input = [ [ { a: 1,b: [1,2]},{ a: 2,{?a: 3,2]} ],[ { a: 1,b: [3,4]},{ a: 3,{ a: 4,4]} ],[ { a:1,b: [5,6]},{ a:2,{ a:3,{ a:4,{ a:5,6]} ] ] 到 outp
我正在尝试将多个数组的数组值与相同的键合并(按合并排序),是否有任何本机方式在Golang中转换此输入
input = [ [ { a: 1,b: [1,2]},{ a: 2,{?a: 3,2]} ],[ { a: 1,b: [3,4]},{ a: 3,{ a: 4,4]} ],[ { a:1,b: [5,6]},{ a:2,{ a:3,{ a:4,{ a:5,6]} ] ] 到 output = [ { a: 1,2,3,4,5,{ a: 5,] 谢谢 解决方法
你的代码不是Go代码(它将作为Ruby传递),而且没有明确的尝试来实际解决问题,这可能是你得到一些downvotes而没有答案的原因.
一种方法是将您的代码解释为Ruby,输入一片切片的(字符串,可能,虽然Ruby会将它们视为符号),可以是ints(在a的情况下)或切片的int(在b)的情况下.您可以使用空接口(interface {})对地图值执行此操作,但使用这样的结构会更直接: type ab struct { a int b []int } 输入为[] [] ab.但只要我们重新调整数据以更好地适应语言,就可以更加直接地完全取消a和b,用一个地图替换该结构,其中a值是键,b值是值.事情就是迭代输入并将切片附加到输出中的简单问题: package main import "fmt" func main() { input := []map[int][]int{ { 1: []int{1,2},2: []int{1,3: []int{1,},{ 1: []int{3,4},2: []int{3,3: []int{3,4: []int{3,{ 1: []int{5,6},2: []int{5,3: []int{5,4: []int{5,5: []int{5,} output := make(map[int][]int) for _,m := range input { for k,v := range m { output[k] = append(output[k],v...) } } fmt.Println(output) } 这会产生输出: map[1:[1 2 3 4 5 6] 2:[1 2 3 4 5 6] 3:[1 2 3 4 5 6] 4:[3 4 5 6] 5:[5 6]] 因此,如果表示数据组织的修改方式,输出就可以根据需要组织数据. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |