我正在尝试将多个数组的数组值与相同的键合并(按+组合排序),Golang中是否有任何本机方式来转换此输入
input = [
[
{ a: 1, b: [1,2]},
{ a: 2, b: [1,2]},
{ a: 3, b: [1,2]}
],
[
{ a: 1, b: [3,4]},
{ a: 2, b: [3,4]},
{ a: 3, b: [3,4]},
{ a: 4, b: [3,4]}
],
[
{ a:1, b: [5,6]},
{ a:2, b: [5,6]},
{ a:3, b: [5,6]},
{ a:4, b: [5,6]},
{ a:5, b: [5,6]}
]
]
Run Code Online (Sandbox Code Playgroud)
成
output = [
{ a: 1, b: [1,2,3,4,5,6]},
{ a: 2, b: [1,2,3,4,5,6]},
{ a: 3, b: [1,2,3,4,5,6]},
{ a: 4, b: [3,4, 5,6]},
{ a: 5, b: [5,6]},
]
Run Code Online (Sandbox Code Playgroud)
谢谢
Dar*_*tle 11
你的代码不是Go代码(它将作为Ruby传递),而且没有明确的尝试来实际解决问题,这可能是你得到一些downvotes而没有答案的原因.
一种方法是将你的代码解释为Ruby,用input一片切片的地图(字符串,也许,虽然Ruby会将它们视为符号)作为整数(在情况下a)或切片的整数(在的情况b).您可以使用空接口(interface{})使用地图值执行此操作,但使用这样的结构会更直接:
type ab struct {
a int
b []int
}
Run Code Online (Sandbox Code Playgroud)
并且input是一个[][]ab.但只要我们重组的数据,以更好地适应语言,它更直截了当地废除a和b干脆带着一张地图,其中替换该结构a值的键和b值是值.事情是一个简单的问题迭代input和附加切片output:
package main
import "fmt"
func main() {
input := []map[int][]int{
{
1: []int{1, 2},
2: []int{1, 2},
3: []int{1, 2},
},
{
1: []int{3, 4},
2: []int{3, 4},
3: []int{3, 4},
4: []int{3, 4},
},
{
1: []int{5, 6},
2: []int{5, 6},
3: []int{5, 6},
4: []int{5, 6},
5: []int{5, 6},
},
}
output := make(map[int][]int)
for _, m := range input {
for k, v := range m {
output[k] = append(output[k], v...)
}
}
fmt.Println(output)
}
Run Code Online (Sandbox Code Playgroud)
这会产生输出:
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]]
Run Code Online (Sandbox Code Playgroud)
output 因此,根据表示数据组织的修改方式,可以按照您的需要组织数据.
| 归档时间: |
|
| 查看次数: |
6660 次 |
| 最近记录: |