web-dev-qa-db-fra.com

Moyen facile d'obtenir les clés d'une carte dans l'ordre alphabétique

Dans Go, quel est le moyen le plus simple de trier les clés d'une carte par ordre alphabétique? C'est la façon la plus courte de le faire:

package main

import "container/vector"
import "fmt"
import "sort"

func main() {
    m := map[string]string {"b":"15", "z":"123123", "x":"sdf", "a":"12"}
    var keys vector.StringVector;
    for k,_ := range ( m ) {
            keys.Push(k)
    }
    sort.Sort( &keys )
    fmt.Printf("%v\n", keys)
}
41
marketer

Vous triez un tableau de chaînes à l'aide de StringVector. Pour minimiser la surcharge, vous pouvez trier un tableau de chaînes.

package main

import (
    "fmt"
    "sort"
)

func main() {
    m := map[string]string{"b": "15", "z": "123123", "x": "sdf", "a": "12"}
    mk := make([]string, len(m))
    i := 0
    for k, _ := range m {
        mk[i] = k
        i++
    }
    sort.Strings(mk)
    fmt.Println(mk)
}

Production:

[a b x z]
54
peterSO

Ce serait la méthode la plus élégante:

package main

import (
    "fmt"
    "sort"
)

func main() {
    m := map[string]string{"b": "15", "z": "123123", "x": "sdf", "a": "12"}
    keys := make([]string, 0, len(m))
    for key := range m {
        keys = append(keys, key)
    }
    sort.Strings(keys)
    fmt.Println(keys)
}
14
Igor Dolzhikov