Maison >développement back-end >Golang >Comment trier une carte de chaîne de caractères entiers par valeur dans l'ordre décroissant en Go ?

Comment trier une carte de chaîne de caractères entiers par valeur dans l'ordre décroissant en Go ?

DDD
DDDoriginal
2024-12-15 15:16:20789parcourir

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

Tri d'une carte par ses valeurs

Étant donné une carte de chaînes en nombres entiers, il est souhaitable de trier la carte par ses valeurs dans l'ordre décroissant commander.

Solution :

La mise en œuvre d'une interface de tri personnalisée peut obtenir cette fonctionnalité. Le code suivant fournit toutes les fonctions nécessaires pour trier une carte par ses valeurs :

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

Par exemple, en utilisant la carte donnée :

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

La sortie triée serait :

foo, 20
bar, 20
hello, 10

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn