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

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

如何按地圖的值對切片進行排序

如何按地圖的值對切片進行排序

Go
DIEA 2021-09-27 20:44:28
似乎是一個基本問題,但找不到簡單的答案。我有一片:[]string{"dog", "cat", "bird"}通過查找地圖中的排序值對其進行排序的最佳方法是什么:map[string]int{"dog": 2, "cat":3, "bird": 1}這樣切片的順序如下:[]string{"bird", "dog", "cat"}
查看完整描述

1 回答

?
慕斯709654

TA貢獻1840條經驗 獲得超5個贊

    sort.Interface為存儲數據和權重的類型實現接口:


import "sort"


type WeightedStringSlice struct {

    Strings []string

    Weights map[string]int

}


func (s *WeightedStringSlice) Len() int {

    return len(s.Strings)

}


func (s *WeightedStringSlice) Less(i, j int) bool {

    return s.Weights[s.Strings[i]] < s.Weights[s.Strings[j]]

}


func (s *WeightedStringSlice) Swap(i, j int) {

    s.Strings[i], s.Strings[j] = s.Strings[j], s.Strings[i]

}

然后調用sort.Sort它:


data := WeightedStringSlice{

    Strings: []string{"dog", "cat", "bird"},

    Weights: map[string]int{"dog": 2, "cat": 3, "bird": 1},

}

sort.Sort(&data)

fmt.Printf("%v\n", data.Strings)

Live Demo


查看完整回答
反對 回復 2021-09-27
  • 1 回答
  • 0 關注
  • 253 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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