以字母顺序获取映射中的键的简便方法

huangapple go评论116阅读模式
英文:

Easy way to get the keys in a map in alphabetical order

问题

在Go语言中,按字母顺序获取映射中的键的最简单方法是什么?这是我能做到的最简短的方法:

  1. package main
  2. import "container/vector"
  3. import "fmt"
  4. import "sort"
  5. func main() {
  6. m := map[string]string {"b":"15", "z":"123123", "x":"sdf", "a":"12"}
  7. var keys vector.StringVector;
  8. for k,_ := range ( m ) {
  9. keys.Push(k)
  10. }
  11. sort.Sort( &keys )
  12. fmt.Printf("%v\n", keys)
  13. }

请注意,这是一个Go语言代码示例,用于按字母顺序获取映射中的键,并打印排序后的结果。

英文:

In Go, what's the easiest way to get the keys in a map sorted alphabetically? This is the shortest way I can do it:

  1. package main
  2. import "container/vector"
  3. import "fmt"
  4. import "sort"
  5. func main() {
  6. m := map[string]string {"b":"15", "z":"123123", "x":"sdf", "a":"12"}
  7. var keys vector.StringVector;
  8. for k,_ := range ( m ) {
  9. keys.Push(k)
  10. }
  11. sort.Sort( &keys )
  12. fmt.Printf("%v\n", keys)
  13. }

答案1

得分: 57

你正在使用StringVector对字符串数组进行排序。为了最小化开销,你可以对字符串数组进行排序。

  1. package main
  2. import (
  3. "fmt"
  4. "sort"
  5. )
  6. func main() {
  7. m := map[string]string{"b": "15", "z": "123123", "x": "sdf", "a": "12"}
  8. mk := make([]string, len(m))
  9. i := 0
  10. for k, _ := range m {
  11. mk[i] = k
  12. i++
  13. }
  14. sort.Strings(mk)
  15. fmt.Println(mk)
  16. }

输出:

  1. [a b x z]
英文:

You are sorting an array of strings using StringVector. To minimize overhead, you could sort an array of strings.

  1. package main
  2. import (
  3. "fmt"
  4. "sort"
  5. )
  6. func main() {
  7. m := map[string]string{"b": "15", "z": "123123", "x": "sdf", "a": "12"}
  8. mk := make([]string, len(m))
  9. i := 0
  10. for k, _ := range m {
  11. mk[i] = k
  12. i++
  13. }
  14. sort.Strings(mk)
  15. fmt.Println(mk)
  16. }

Output:

  1. [a b x z]

答案2

得分: 17

那将是最优雅的方法:

  1. package main
  2. import (
  3. "fmt"
  4. "sort"
  5. )
  6. func main() {
  7. m := map[string]string{"b": "15", "z": "123123", "x": "sdf", "a": "12"}
  8. keys := make([]string, 0, len(m))
  9. for key := range m {
  10. keys = append(keys, key)
  11. }
  12. sort.Strings(keys)
  13. fmt.Println(keys)
  14. }
英文:

That would be most elegant method:

  1. package main
  2. import (
  3. "fmt"
  4. "sort"
  5. )
  6. func main() {
  7. m := map[string]string{"b": "15", "z": "123123", "x": "sdf", "a": "12"}
  8. keys := make([]string, 0, len(m))
  9. for key := range m {
  10. keys = append(keys, key)
  11. }
  12. sort.Strings(keys)
  13. fmt.Println(keys)
  14. }

huangapple
  • 本文由 发表于 2010年1月11日 04:32:53
  • 转载请务必保留本文链接:https://go.coder-hub.com/2038508.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定