这篇文章主要介绍“Golang怎么将Map的键值对调”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Golang怎么将Map的键值对调”文章能帮助大家解决问题。
map是一堆键值对的未排序集合,类似Python中字典的概念,它的格式为map[keyType]valueType,是一个key-value的hash结构。map的读取和设置也类似slice一样,通过key来操作,只是slice的index只能是int类型,而map多了很多类型,可以是int,可以是string及所有完全定义了==与!=操作的类型
Map原数据:
moMap := map[string]int{
"张三": 21, "李四": 56, "王五": 23,
"赵六": 45, "周七": 32, "陈八": 21,
"许九": 21, "王十": 16, "吴三": 45,
"郑六": 23, "许七": 43, "李三": 16,
}
具体代码如下(示例):
// 键值对调
// 传入参数:moMap map[string]int
// 返回值: map[int][]string
func reserveMap(moMap map[string]int) map[int][]string {
// 建立一个 resMap 与 moMap 容量相同
// 由于对调可能存在多个值对应一个Key
// string 需转为 切片[]string
resMap := make(map[int][]string, len(moMap))
// 通过for range 遍历 moMap
// k 即为 Key v 即为 Value
for k, v := range moMap {
// 由于现在对应为 切片[]string
// 使用 append 达到添加多个的效果
resMap[v] = append(resMap[v], k)
}
// 程序结束
return resMap
}
详细代码如下(示例):
package main
import (
"fmt"
)
func main() {
moMap := map[string]int{
"张三": 21, "李四": 56, "王五": 23,
"赵六": 45, "周七": 32, "陈八": 21,
"许九": 21, "王十": 16, "吴三": 45,
"郑六": 23, "许七": 43, "李三": 16,
}
// 打印对调前
for k, v := range moMap {
fmt.Printf("Key: %v, Value: %v \n", k, v)
}
resMap := reserveMap(moMap)
fmt.Println("reserve:")
// 打印对调后
for k, v := range resMap {
fmt.Printf("Key: %v, Value: %v \n", k, v)
}
}
// 键值对调
// 传入参数:moMap map[string]int
// 返回值: map[int][]string
func reserveMap(moMap map[string]int) map[int][]string {
// 建立一个 resMap 与 moMap 容量相同
// 由于对调可能存在多个值对应一个Key
// string 需转为 切片[]string
resMap := make(map[int][]string, len(moMap))
// 通过for range 遍历 moMap
// k 即为 Key v 即为 Value
for k, v := range moMap {
// 由于现在对应为 切片[]string
// 使用 append 达到添加多个的效果
resMap[v] = append(resMap[v], k)
}
// 程序结束
return resMap
}
键值的简单调换是熟悉Golang Map 数据类型的前奏。
package main
import "fmt"
func main() {
/*创建集合并初始化 */
countryCapitalMap := make(map[string]string)
/* map插入key - value对,各个国家对应的首都 */
countryCapitalMap [ "France" ] = "巴黎"
countryCapitalMap [ "Italy" ] = "罗马"
countryCapitalMap [ "Japan" ] = "东京"
countryCapitalMap [ "India " ] = "新德里"
/*使用键输出value值 */
for country := range countryCapitalMap {
fmt.Println(country, "首都是", countryCapitalMap [country])
}
/*查看元素在集合中是否存在 */
capital, ok := countryCapitalMap [ "American" ] /*如果确定是真实的,则存在,否则不存在 */
/*fmt.Println(capital) */
/*fmt.Println(ok) */
if (ok) {
fmt.Println("American 的首都是", capital)
} else {
fmt.Println("American 的首都不存在")
}
}
关于“Golang怎么将Map的键值对调”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。