亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

按行值對 [][]string(2D 切片)進行分組

按行值對 [][]string(2D 切片)進行分組

Go
夢里花落0921 2023-07-10 16:48:45
我正在 go 中處理字符串的 2D 切片,我想按“A”列值對它們進行分組,但我無法弄清楚。我嘗試使用 gota 數據框,但它也沒有像 pandas 中可用的分組依據。    input := [][]string{        []string{"b", "3", "2.9", "5.3"},        []string{"a", "4", "5.1", "9.1"},        []string{"b", "4", "6.0", "5.3"},        []string{"c", "3", "6.0", "5.5"},        []string{"a", "2", "7.1", "9.2"},    }我想要這樣的輸出。[[b 3 2.9 5.3 4 6.0 5.3] [a 4 5.1 9.1 2 7.1 9.2] [c 3 6.0 5.5]]
查看完整描述

1 回答

?
素胚勾勒不出你

TA貢獻1827條經驗 獲得超9個贊

以下group()函數利用映射來收集具有相同 [0] 元素的輸入字符串切片,然后將其轉換回 2D 切片。這將完成你的工作:


func group(input [][]string) (output [][]string) {

    tmp := map[string][]string{}

    for _, slice := range input {

        if len(slice) <= 1 {

            continue

        }

        tmp[slice[0]] = append(tmp[slice[0]], slice[1:]...)

    }

    for k := range tmp {

        v := append([]string{k}, tmp[k]...)

        output = append(output, v)

    }

    return

}


func main() {

    input := [][]string{

        []string{"b", "3", "2.9", "5.3"},

        []string{"a", "4", "5.1", "9.1"},

        []string{"b", "4", "6.0", "5.3"},

        []string{"c", "3", "6.0", "5.5"},

        []string{"a", "2", "7.1", "9.2"},

    }

    fmt.Println(group(input)) // [[a 4 5.1 9.1 2 7.1 9.2] [c 3 6.0 5.5] [b 3 2.9 5.3 4 6.0 5.3]]

}

對上面代碼的分析留作練習。:)


查看完整回答
反對 回復 2023-07-10
  • 1 回答
  • 0 關注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號