2013-08-20 5 views
13

कृपया मेरे मानचित्र नीचे देखेंक्रम में 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) 
    } 

हालांकि के आकार के क्रम में इस नक्शे के माध्यम से लूप करने के लिए देख रहा हूँ, यह बाहर प्रिंट

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 

आदि ...

आप आपकी मदद के लिए बहुत बहुत धन्यवाद!

+0

आप टुकड़ा सॉर्ट, लूप करने के लिए जरूरत है एक टुकड़ा करने के लिए जोड़े जोड़ सकते हैं और करेंगे। – Crisfole

+0

http://stackoverflow.com/questions/12108215/golang-map-prints-out-of-order –

+4

[spec] (http://golang.org/ref/spec#For_statements) के अनुसार, "देखें नक्शे पर पुनरावृत्ति क्रम निर्दिष्ट नहीं है और इसे एक पुनरावृत्ति से अगले तक समान होने की गारंटी नहीं है। " गो लेखकों ने जानबूझकर पुनरावृत्ति अनुक्रम को यादृच्छिक रूप से याद किया (यानी वे एक यादृच्छिक संख्या जनरेटर का उपयोग करते हैं ताकि प्रत्येक श्रेणी विवरण एक अलग ordr उत्पन्न करता हो) ताकि कोई भी किसी भी हस्तक्षेप आदेश पर गलत तरीके से निर्भर न हो। (क्या होता है यदि आप हर बार अलग-अलग आदेश पर निर्भर करते हैं? एचएम ...) – fuz

उत्तर

27

सभी कुंजियों एकत्र करें, उन्हें सॉर्ट और निम्नलिखित की तरह, कुंजी के द्वारा अपने नक्शे पुनरावृति:

keys := make([]int, 0) 
for k, _ := range romanNumeralDict { 
    keys = append(keys, k) 
} 
sort.Ints(keys) 
for _, k := range keys { 
    fmt.Println(k, romanNumeralDict[k]) 
} 
संबंधित मुद्दे

 संबंधित मुद्दे