首頁 >後端開發 >Golang >如何以 Go Map 的整數值降序對 Go Map 進行排序?

如何以 Go Map 的整數值降序對 Go Map 進行排序?

Susan Sarandon
Susan Sarandon原創
2024-12-10 13:56:15172瀏覽

How Can I Sort a Go Map by Its Integer Values in Descending Order?

Go 中對Map 值進行排序

在Go 中,給定的Map,其中鍵為string 類型,值為int 類型,可以根據其值進行降序排序順序。

問題陳述:

考慮以下內容map:

map[string]int{"hello": 10, "foo": 20, "bar": 20}

目標是將排序後的鍵值對印為:

foo, 20
bar, 20
hello, 10

實作:

為了實現這種排序,需要實作Go排序介面是必要的。這是透過定義Len()、Less() 和Swap() 函數來完成的:

func rankByWordCount(wordFrequencies map[string]int) PairList {
  pl := make(PairList, len(wordFrequencies))
  i := 0
  for k, v := range wordFrequencies {
    pl[i] = Pair{k, v}
    i++
  }
  sort.Sort(sort.Reverse(pl))
  return pl
}

type Pair struct {
  Key string
  Value int
}

type PairList []Pair

func (p PairList) Len() int { return len(p) }
func (p PairList) Less(i, j int) bool { return p[i].Value < p[j].Value }
func (p PairList) Swap(i, j int){ p[i], p[j] = p[j], p[i] }

結論:

透過實作排序介面並利用sort.Reverse 函數,在Go中,map 可以根據值進行有效排序,從而實現各種排序場景。

以上是如何以 Go Map 的整數值降序對 Go Map 進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn