Go语言map排序

一、按照key排序

按照key排序先要取出map中的key放入切片中,将切片排序后再取出value。

import (
	"fmt"
	"sort"
)

func main() {
	m := map[int]string{
		1:   "hello",
		123: "my",
		456: "homepage",
		11:  "gopher",
		34:  "welcome",
		45:  "to",
	}

	var s []int
	// 将key取出并放入s
	for k := range m {
		s = append(s, k)
	}

	// 将s排序
	sort.Ints(s)

	// 取出value
	for _, k := range s {
		fmt.Printf("key = %d, value = %s\n", k, m[k])
	}
}

// key = 1, value = hello
// key = 11, value = gopher
// key = 34, value = welcome
// key = 45, value = to
// key = 123, value = my
// key = 456, value = homepage

二、按照value排序

按照value排序也是先要取出map中的key放入切片中,将切片按照value排序(用到sort.Slice()函数)后再取出value。

import (
	"fmt"
	"sort"
)

func main() {
	m := map[int]string{
		1: "a",
		2: "c",
		3: "e",
		4: "b",
		5: "d",
		6: "f",
	}

	keys := make([]int, 0, len(m))
	// 取出key
	for k := range m {
		keys = append(keys, k)
	}

	// 将key按照value进行排序
	sort.Slice(keys, func(i, j int) bool {
		return m[keys[i]] < m[keys[j]]
	})

	for _, k := range keys {
		fmt.Printf("key = %d, value = %s\n", k, m[k])
	}
}


// key = 1, value = a
// key = 4, value = b
// key = 2, value = c
// key = 5, value = d
// key = 3, value = e
// key = 6, value = f

记得以前刷题遇到过一个题目:计算给定字符串中字符出现的次数并按照降序排序。

根据上例,我们可以很容易写出方案:

import (
	"fmt"
	"sort"
)

func main() {
	str := "goMapSortCase"

	m := make(map[string]int)
	s := make([]string, 0, len(str))

	for _, v := range str {
		m[string(v)]++
	}

	for k := range m {
		s = append(s, k)
	}
	sort.Slice(s, func(i, j int) bool {
		return m[s[i]] > m[s[j]]
	})

	for _, key := range s {
		fmt.Printf("%s %d;", key, m[key])
	}
}

// o 2;a 2;p 1;r 1;s 1;e 1;g 1;M 1;S 1;t 1;C 1;

全部评论

相关推荐

找到实习了&nbsp;给了150一天&nbsp;但是说是低代码&nbsp;值得去吗
码农索隆:是在没实习,可去,待个一两周,不行就润呗
点赞 评论 收藏
分享
Twilight_m...:表格简历有点难绷。说说个人看法: 1.个人基本情况里好多无意义信息,什么婚姻状况、健康状况、兴趣爱好、户口所在地、身份证号码、邮政编码,不知道的以为你填什么申请表呢。 2.校内实践个人认为对找工作几乎没帮助,建议换成和测开有关的项目,实在没得写留着也行。 3.工作经历完全看不出来是干什么的,起码看着和计算机没啥关系,建议加强描述,写点你在工作期间的实际产出、解决了什么问题。 4.个人简述大而空,看着像AI生成,感觉问题最大。“Python,C,C++成为我打造高效稳定服务的得力工具”、“我渴望凭借自身技术知识与创新能力,推动人工智能技术的应用发展,助力社会实现智能化转型”有种小学作文的美感。而且你确定你个人简述里写的你都会嘛?你AI这块写的什么“深入研究”,发几篇顶会的硕博生都不一定敢这么写。而且你AI这块的能力和软测也完全无关啊。个人简述建议写你对哪些技术栈、哪些语言、哪些生产工具的掌握,写的有条理些,而且最好是和测开强相关的。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务