ホームページ >バックエンド開発 >Golang >Goで文字列整数マップを値で降順に並べ替えるにはどうすればよいですか?

Goで文字列整数マップを値で降順に並べ替えるにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-15 15:16:20737ブラウズ

How to Sort a String-Integer Map by Value in Descending Order in Go?

値によるマップの並べ替え

文字列から整数へのマップが与えられた場合、マップをその値によって降順に並べ替えることが望ましいorder.

解決策:

カスタム並べ替えインターフェイスを実装すると、この機能を実現できます。次のコードは、マップを値で並べ替えるのに必要な関数をすべて提供します:

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] }

たとえば、指定されたマップを使用すると:

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

並べ替えられた出力は次のようになります:

foo, 20
bar, 20
hello, 10

以上がGoで文字列整数マップを値で降順に並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。