Maison >développement back-end >Golang >Comment puis-je trier une carte Go par ses valeurs entières par ordre décroissant ?

Comment puis-je trier une carte Go par ses valeurs entières par ordre décroissant ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-10 13:56:15169parcourir

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

Tri des valeurs de la carte dans Go

Dans Go, une carte donnée où les clés sont de type chaîne et les valeurs sont de type int peut être triée en fonction de ses valeurs en ordre décroissant commande.

Énoncé du problème :

Considérez ce qui suit map :

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

Le but est d'imprimer les paires clé-valeur triées comme :

foo, 20
bar, 20
hello, 10

Implémentation :

Pour réaliser ce tri, une implémentation du Aller trier l’interface est nécessaire. Cela se fait en définissant les fonctions Len(), Less() et 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] }

Conclusion :

En implémentant l'interface de tri et en tirant parti de la fonction sort.Reverse, les cartes peuvent être efficacement triées par leurs valeurs dans Go, permettant divers scénarios de tri.

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