2013-11-21 7 views
7

मैं कैसे मूल आदेश मैं की स्थापना की में मेरे शब्दकोश बाहर प्रिंट करूं?प्रिंट अजगर में शब्दकोश की मूल इनपुट आदेश

अगर मैं इस तरह एक शब्दकोश है:

smallestCars = {'Civic96': 12.5, 'Camry98':13.2, 'Sentra98': 13.8} 

और मैं यह कर:

for cars in smallestCars: 
    print cars 

यह आउटपुट:

:

Sentra98 
Civic96 
Camry98 

लेकिन क्या मैं चाहता हूँ यह है

Civic96 
Camry98 
Sentra98 

वहाँ एक रास्ता यह एक सूची में रूपांतरित किए बिना क्रम में मूल शब्दकोश मुद्रित करने के लिए है?

+2

यही hashing :) में किसी भी क्रम – JoeC

उत्तर

12

एक नियमित शब्दकोश कोई क्रम नहीं है। तुम्हें पता है, collections मॉड्यूल है, जो या सूचियों की एक सूची tuples की एक सूची ले जा सकते हैं की OrderedDict उपयोग करने की आवश्यकता सिर्फ इस तरह:

import collections 

key_value_pairs = [('Civic86', 12.5), 
        ('Camry98', 13.2), 
        ('Sentra98', 13.8)] 
smallestCars = collections.OrderedDict(key_value_pairs) 

for car in smallestCars: 
    print(car) 

और उत्पादन होता है:

Civic96 
Camry98 
Sentra98 
+1

धन्यवाद पृथक नहीं किया, मैं अपने जवाब को संपादित करने से पहले की कोशिश की। यह काम करता था और मुझे अपने कोड को संशोधित करने की आवश्यकता नहीं थी, जहां उसने कुंजी की तुलना करने के लिए जांच की थी। एक बार फिर धन्यवाद। – user2989027

+0

मुझे खुशी है कि मैं मदद कर सकता हूं;) –

2

शब्दकोश नहीं हैं आदेश रखने के लिए आवश्यक है। OrderedDict का प्रयोग करें।

1

जब आप शब्दकोश बनाने के लिए, अजगर क्या आपको तत्वों ने लिखा में के बारे में परवाह नहीं है और यह क्रम को याद नहीं रखेंगे के बाद वस्तु बन जाता है। आप उसी क्रम में प्रिंट करने के लिए (नियमित शब्दकोश) की अपेक्षा नहीं कर सकते हैं। आपके कोड की संरचना बदलना आपके पास सबसे अच्छा विकल्प है और OrderedDict एक अच्छा विकल्प है जैसा कि अन्य ने कहा है।

0
>>> for car in sorted(smallestCars.items(),key=lambda x:x[1]): 
...  print car[0] 
... 
Civic96 
Camry98 
Sentra98 
0

आप यह करने के लिए एक टपल (नेस्टेड) ​​सरणी का उपयोग कर सकते हैं:

smallestCars = [['Civic86', 12.5], 
       ['Camry98', 13.2], 
       ['Sentra98', 13.8]] 

for car, size in smallestCars: 
    print(car, size) 

# ('Civic86', 12.5) 
# ('Camry98', 13.2) 
# ('Sentra98', 13.8) 
संबंधित मुद्दे