所谓键值对调,指的是交流字典的键和值,在一些编程措辞中,内置了相应的函数,比如PHP 的 array_flip 函数。
在 Go 措辞中,我们须要手动编写代码来实现,如果我们要对调 testMap 字典的键值,可以这么做:

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

for k,v := range testMap {

php键值排序golang2021数据格局42键值对换与排序 PHP

invMap[v] = k

}

for k,v := range invMap {

fmt.Println(k, v)

}

上述代码的打印结果是:

3 three

1 one

2 two

字典排序

我们已经知道 Go措辞的字典是一个无序凑集,如果你想要对字典进行排序,可以通过分别为字典的键和值创建切片,然后通过对切片进行排序来实现。

按照键进行排序

如果要对字典按照键进行排序,可以这么做:

keys := make([]string, 0)

for k,_ := range testMap {

keys = append(keys, k)

}

sort.Strings(keys) // 对键进行排序

fmt.Println("Sorted map bykey:")

for _,k := range keys {

fmt.Println(k, testMap[k])

}

上述代码打印结果是:

Sortedmap by key:

one 1

three 3

two 2

该结果是按照键名在字母表中的排序进行升序排序的结果。

按照值进行排序

如果要对字典按照值进行排序,可以这么做:

values := make([]int, 0)

for _,v := range testMap {

values = append(values, v)

}

sort.Ints(values) // 对值进行排序

fmt.Println("Sorted map byvalue:")

for _,v := range values {

fmt.Println(invMap[v], v)

}

这里我们借助了之前创建的 invMap 通过字典的值反查对应的键,上述代码打印结果如下:

Sortedmap by value:

one 1

two 2

three 3

该结果是按照键值对应数字大小进行升序排序的结果。