Home > Backend Development > Golang > How to Sort a Go Map by its Values?

How to Sort a Go Map by its Values?

Patricia Arquette
Release: 2024-12-20 07:56:13
Original
178 people have browsed it

How to Sort a Go Map by its Values?

Sorting a Map by its Values in Go

Sorting a map by its values in Go requires a custom implementation of the sort interface. Here's a solution that implements a PairList type and defines necessary functions for sorting:

<br>func rankByWordCount(wordFrequencies map[string]int) PairList {<br>  pl := make(PairList, len(wordFrequencies))<br>  i := 0<br>  for k, v := range wordFrequencies {</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">pl[i] = Pair{k, v}
i++
Copy after login

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

Using the rankByWordCount function, you can sort a map as follows:

<br>wordFrequencies := map[string]int{<br>  "hello": 10,<br>  "foo": 20,<br>  "bar": 20,<br>}</p>
<p>sortedPairs := rankByWordCount(wordFrequencies)</p>
<p>for _, pair := range sortedPairs {<br>  fmt.Println(pair.Key, pair.Value)<br>}<br>

Output:

<br>foo 20<br>bar 20<br>hello 10<br>

The above is the detailed content of How to Sort a Go Map by its Values?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template