1 回答

TA貢獻1876條經(jīng)驗 獲得超6個贊
您無法對map
.
將 轉(zhuǎn)換
map
為鍵值對結(jié)構(gòu)的切片。對切片進行排序(另請參見如何使用多個排序參數(shù)對結(jié)構(gòu)進行排序?)
例如像這樣:
func main() {
wordFrequency := map[string]int{"banana": 3, "america": 2, "abb": 2, "test": 2, "car": 1}
vec := mapToSlice(wordFrequency)
sort.Slice(vec, func(i, j int) bool {
// 1. value is different - sort by value (in reverse order)
if vec[i].value != vec[j].value {
return vec[i].value > vec[j].value
}
// 2. only when value is the same - sort by key
return vec[i].key < vec[j].key
})
fmt.Printf("%v", vec)
}
func mapToSlice(in map[string]int) []KV {
vec := make([]KV, len(in))
i := 0
for k, v := range in {
vec[i].key = k
vec[i].value = v
i++
}
return vec
}
type KV struct {
key string
value int
}
印刷:
[{banana 3} {abb 2} {america 2} {test 2} {car 1}]
- 1 回答
- 0 關注
- 127 瀏覽
添加回答
舉報