• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Gomap字典排序

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

按照键进行排序

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

keys := make([]string, 0)
for k, _ := range testMap {
    keys = append(keys, k)
}
sort.Strings(keys)  // 对键进行排序
fmt.Println("Sorted map by key:")
for _, k := range keys {
    fmt.Println(k, testMap[k])
}

上述代码打印结果是:

Sorted map by key:
one 1
three 3
two 2

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

键值对调

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

invMap := make(map[int] string, 3)
for k, v := range testMap {
    invMap[v] = k
}
for k, v := range invMap {
    fmt.Println(k, v)
}

上述代码的打印结果是:

3 three
1 one
2 two

按照值进行排序

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

values := make([]int, 0)
for _, v := range testMap {
    values = append(values, v)
}
sort.Ints(values)   // 对值进行排序
fmt.Println("Sorted map by value:")
for _, v := range values  {
    fmt.Println(invMap[v], v)
}

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

Sorted map by value:
one 1
two 2
three 3

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

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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap