加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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]]

因此,如果表示数据组织的修改方式,输出就可以根据需要组织数据.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读