请看下面我的地图
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",
}
Run Code Online (Sandbox Code Playgroud)
我希望按照键的大小顺序遍历此映射
for k, v := range romanNumeralDict {
fmt.Println("k:", k, "v:", v)
}
Run Code Online (Sandbox Code Playgroud)
然而,这打印出来
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
Run Code Online (Sandbox Code Playgroud)
有没有办法,我可以按照键的大小顺序打印出来,所以,我想像这样循环遍历这张地图
k:1
K:4
K:5
K:9
k:10
Run Code Online (Sandbox Code Playgroud)
等等...
非常感谢您的帮助!
Vol*_*ker 60
收集所有密钥,对它们进行排序并按键迭代地图,如下所示:
keys := make([]int, 0)
for k, _ := range romanNumeralDict {
keys = append(keys, k)
}
sort.Ints(keys)
for _, k := range keys {
fmt.Println(k, romanNumeralDict[k])
}
Run Code Online (Sandbox Code Playgroud)
Tim*_*mmm 16
你可以通过预分配使它快一点,keys
因为你知道它的长度:
func sortedKeys(m map[Key]Value) ([]Key) {
keys := make([]Key, len(m))
i := 0
for k := range m {
keys[i] = k
i++
}
sort.Keys(keys)
return keys
}
Run Code Online (Sandbox Code Playgroud)
替换Key
并Value
使用您的键和值类型(包括sort
行).咳嗽仿制药咳嗽
归档时间: |
|
查看次数: |
37600 次 |
最近记录: |