Go map字典排序
前言
我们已经知道 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 包,这个包提供了一系列对切片和用户自定义集合进行排序的函数。
Go map字典排序的更多相关文章
- day3--集合、文件操作、字符编码与转换、函数(递归,lambda,filter,map)、字典排序
list1 = set([1, 2, 3, 4, 5, 6, 5, 5, 5])list2 = set([11, 2, 36, 'a', 5, 6, 5, 5, 5])list3 = set([1, ...
- C# 字典排序Array.Sort
Array.Sort可以实现便捷的字典排序,但如果完全相信他,那么就容易产生些异常!太顺利了,往往是前面有坑等你. 比如:微信接口,好多地方需要签名认证,签名的时候需要用的字典排序,如果只用Array ...
- python 字典排序 关于sort()、reversed()、sorted()
一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a ...
- 【Java进阶】---map集合排序
map集合排序 这篇文章讲的不仅仅是map排序,比如把对象按某一属性排序,它都可以解决这些问题. 比如,有N个对象,每个对象有个属性就是成绩,成绩分:优秀,良好,合格.那我们如何按 ...
- Java提高(5)---map集合排序
map集合排序 这篇文章讲的不仅仅是map排序,比如把对象按某一属性排序,它都可以解决这些问题. 比如,有N个对象,每个对象有个属性就是成绩,成绩分:优秀,良好,合格.那我们如何按照成绩的好坏进行排序 ...
- java如何对map进行排序详解(map集合的使用)
今天做统计时需要对X轴的地区按照地区代码(areaCode)进行排序,由于在构建XMLData使用的map来进行数据统计的,所以在统计过程中就需要对map进行排序. 一.简单介绍Map 在讲解Map排 ...
- Map的有序和无序实现类,与Map的排序
1.HashMap.Hashtable不是有序的: 2.TreeMap和LinkedHashMap是有序的(TreeMap默认 Key 升序,LinkedHashMap则记录了插入顺序). 今天做统计 ...
- <转>python字典排序 关于sort()、reversed()、sorted()
一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a ...
- java的字典排序
按照教程上的代码还是报错 应该是字典排序的问题,不能是Arrays.sort()
- 【java】关于Map的排序性的一次使用,有序的Map
关于Map的排序性的一次使用,有序的Map >>>>> hashmap是按key的hash码排序的,而treemap是利用comparator 进行key的自然排序的 / ...
随机推荐
- Qt编写的项目作品7-视频监控系统
一.功能特点 (一)软件模块 视频监控模块,各种停靠小窗体子模块,包括设备列表.图文警情.窗口信息.云台控制.预置位.巡航设置.设备控制.悬浮地图.网页浏览等. 视频回放模块,包括本地回放.远程回放. ...
- C# – XmlSerializer:字符串“2020-07-31 09:29:16”不是有效的 AllXsd 值。
C#中使用XmlSerializer对字符串进行反序列化时,提示:字符串"2020-07-31 09:29:16"不是有效的AllXsd值. 原因: 先说下为什么会出现这样的错误, ...
- Vue数据更新不渲染页面的问题
一. 问题现象 在通过数组下标的方式修改集合元素,元素的值确实是更新了,但是页面不能重新渲染. 二. 原因分析 Vue官方文档传送门 三. 解决方案 // 针对数组使用 this.$set(arr,i ...
- Springboot集成-ClickHouse
1.clickhouse应⽤场景 1.绝大多数请求都是用于读访问的 2.数据需要以大批次(大于1000行)进行更新,而不是单行更新:或者根本没有更新操作 3.数据只是添加到数据库,没有必要修改 4.读 ...
- Java8新特性时间日期库
Java8新特性的功能已经更新了不少篇幅了,今天重点讲解时间日期库中DateTime相关处理.同样的,如果你现在依旧在项目中使用传统Date.Calendar和SimpleDateFormat等API ...
- 【隐私计算笔谈】MPC系列专题(十):安全多方计算下的集合运算
学习&转载文章:[隐私计算笔谈]MPC系列专题(十):安全多方计算下的集合运算 集合运算 集合可以通俗地描述为确定的一堆东西.如有一个集合\(\),一个元素\(\)要么属于集合\(\),记做\ ...
- AI定制祝福视频,广州塔、动态彩灯、LED表白,直播互动新玩法(附下载链接)
在追剧的时候经常能看到一些浪漫的告白桥段,男主用圣诞彩灯表白.用城市标志性建筑的LED表白,或者在五光十色的烟花绽放后刻下女主角的名字,充满了仪式感和氛围感~ 现在,这样的表白效果用AI软件就能实现了 ...
- 浅谈HPC中的Lustre
本文分享自天翼云开发者社区<浅谈HPC中的Lustre>,作者:n****m 1. 什么是 lustre? Lustre 体系结构是一个为集群设计的存储体系结构. 其核心组件是运行在 Li ...
- [车联网/计算机网络] Autosar 的 `ARXML` 配置数据库文件协议
序: 缘起 ARXML 概述 : Autosar 的 ARXML 配置数据库文件协议 ARXML 文件 ARXML文件: AUTOSAR系统描述文件,后缀*.arxml 实质是一个XML文件,一般通过 ...
- 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-12- iframe操作-上篇(详细教程)
1.简介 原估计宏哥这里就不对iframe这个知识点做介绍和讲解了,因为前边的窗口切换就为这种网页处理提供了思路,另一个原因就是虽然iframe很强大,但是现在很少有网站用它了.但是还是有小伙伴或者童 ...