如何依次遍历golang中的地图? [英] How to iterate through a map in golang in order?

查看:111
本文介绍了如何依次遍历golang中的地图?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

请参阅下面的地图

  var romanNumeralDict map [int] string = map [int] string {
1000:M,
900:CM,
500:D,
400:CD,
100:C,
90:XC,
50:L,
40:XL,
10:X,
9:IX,
5:V,
4:IV,
1:I,
}

我正在按照键大小的顺序循环显示这张地图

  for k,v:= range romanNumeralDict {
fmt.Println(k:,k,v:,v)
}
pre>

然而,这会打印出来

  k:1000 v: M 
k:40 v:XL
k:5 v:V
k:4 v:IV
k:900 v:CM
k:500 v:D
k :400 v:CD
k:100 v:C
k:90 v:XC
k:50 v:L
k:10 v:X
k:9 v:IX
k:1 v:I

有没有办法可以将它们打印出来关键的大小顺序如此,我会李可以像这样循环浏览这张地图

  k:1 
K:4
K:5
K:9
k:10

等...



非常感谢您的帮助!

解决方案

收集所有密钥,对它们进行排序并按键重复你的map,如下所示:

$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ k,_:=范围romanNumeralDict {
keys = append(keys,k)
}
sort.Ints(keys)
for _,k:=范围键{
fmt.Println(k,romanNumeralDict [k])
}


Please see below my map

var romanNumeralDict map[int]string = map[int]string{
  1000: "M",
  900 : "CM",
  500 : "D",
  400 : "CD",
  100 : "C",
  90  : "XC",
  50  : "L",
  40  : "XL",
  10  : "X",
  9   : "IX",
  5   : "V",
  4   : "IV",
  1   : "I",
}

I am looking to loop through this map in the order of the size of the key

  for k, v := range romanNumeralDict {
    fmt.Println("k:", k, "v:", v)
  }

However, this prints out

k: 1000 v: M
k: 40 v: XL
k: 5 v: V
k: 4 v: IV
k: 900 v: CM
k: 500 v: D
k: 400 v: CD
k: 100 v: C
k: 90 v: XC
k: 50 v: L
k: 10 v: X
k: 9 v: IX
k: 1 v: I

Is there a way that I can print them out in the order of the size of the key so, I would like to loop through this map like this

k:1
K:4
K:5
K:9
k:10

etc...

Thank you very much for your help!

解决方案

Collect all keys, sort them and iterate your map by key, like the following:

keys := make([]int, 0)
for k, _ := range romanNumeralDict {
    keys = append(keys, k)
}
sort.Ints(keys)
for _, k := range keys {
    fmt.Println(k, romanNumeralDict[k])
}

这篇关于如何依次遍历golang中的地图?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆