字典遍历

使用for range 可以对字典进行遍历。

  1. package main
  2. import "fmt"
  3. func main() {
  4. map1 := map[string]int{
  5. "one": 1,
  6. "two": 2,
  7. "three": 3,
  8. }
  9. for k, v := range map1 {
  10. fmt.Println(k, v)
  11. }
  12. }

键值对调

键值对调指交换字典的键和值。

  1. package main
  2. import "fmt"
  3. func main() {
  4. map1 := map[string]int{
  5. "one": 1,
  6. "two": 2,
  7. "three": 3,
  8. }
  9. for k, v := range map1 {
  10. fmt.Println(k, v)
  11. }
  12. invMap := make(map[int]string, 3)
  13. for k, v := range map1 {
  14. invMap[v] = k
  15. }
  16. for k, v := range invMap {
  17. fmt.Println(k, v)
  18. }
  19. }

字典排序

map是一个无序集合,如果你想要对字典进行排序,可以通过分别为字典的键和值创建切片,然后通过对切片进行排序来实现。

  1. package main
  2. import (
  3. "fmt"
  4. "sort"
  5. )
  6. func main() {
  7. map1 := map[string]int{
  8. "one": 1,
  9. "two": 2,
  10. "three": 3,
  11. }
  12. keys := make([]string, 3)
  13. for k := range map1 {
  14. keys = append(keys, k)
  15. }
  16. sort.Strings(keys)
  17. for _, v := range keys {
  18. fmt.Println(v, map1[v])
  19. }
  20. invMap := make(map[int]string, 3)
  21. for k, v := range map1 {
  22. invMap[v] = k
  23. }
  24. keys2 := make([]int, 3)
  25. for k, _ := range invMap {
  26. keys2 = append(keys2, k)
  27. }
  28. sort.Ints(keys2)
  29. for _, v := range keys2 {
  30. fmt.Println(v, invMap[v])
  31. }
  32. }

我们在对切片进行排序时,使用了 Go 语言内置的 sort 包,这个包提供了一系列对切片和用户自定义集合进行排序的函数。