清水泥沙

golang基础(17.字典遍历排序)

字典遍历

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

package main

import "fmt"

func main() {
	map1 := map[string]int{
		"one":   1,
		"two":   2,
		"three": 3,
	}

	for k, v := range map1 {
		fmt.Println(k, v)
	}
}

键值对调

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

package main

import "fmt"

func main() {
	map1 := map[string]int{
		"one":   1,
		"two":   2,
		"three": 3,
	}

	for k, v := range map1 {
		fmt.Println(k, v)
	}

	invMap := make(map[int]string, 3)

	for k, v := range map1 {
		invMap[v] = k
	}

	for k, v := range invMap {
		fmt.Println(k, v)
	}
}

字典排序

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

package main

import (
	"fmt"
	"sort"
)

func main() {
	map1 := map[string]int{
		"one":   1,
		"two":   2,
		"three": 3,
	}

	keys := make([]string, 3)
	for k := range map1 {
		keys = append(keys, k)
	}

	sort.Strings(keys)
	for _, v := range keys {
		fmt.Println(v, map1[v])
	}

	invMap := make(map[int]string, 3)
	for k, v := range map1 {
		invMap[v] = k
	}

	keys2 := make([]int, 3)
	for k, _ := range invMap {
		keys2 = append(keys2, k)
	}
	sort.Ints(keys2)
	for _, v := range keys2 {
		fmt.Println(v, invMap[v])
	}
}

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