2013-03-25 3 views
16

द्वारा एक शब्दकोश को सॉर्ट करने के लिए कैसे मैंने कुंजी द्वारा निर्देश को सॉर्ट करने की कोशिश की लेकिन कोई मौका नहीं। यह मेरा dict है:पायथन: कुंजी

result={'1':'value1','2':'value2',...} 

मैं Python2.7 उपयोग कर रहा हूँ और मैं इस

keys = result.keys() 
keys.sort() 

पाया लेकिन यह मैं क्या उम्मीद थी, मैं एक अवर्गीकृत dict नहीं है। अजगर

उत्तर

7

मानक पायथन शब्दकोश स्वाभाविक रूप से अनियंत्रित हैं। हालांकि, आप collections.OrderedDict का उपयोग कर सकते हैं। यह प्रविष्टि आदेश को बरकरार रखता है, तो तुम सब करने की है वांछित क्रम में कुंजी/मान जोड़े को जोड़ने है:

In [4]: collections.OrderedDict(sorted(result.items())) 
Out[4]: OrderedDict([('1', 'value1'), ('2', 'value2')]) 
+1

क्या होगा मेरे पास 1000 जोड़े (कुंजी, मूल्य) था ?? – Imoum

+0

अगर मुझे 'ऑर्डरर्ड डिक्ट ([(' 1 ',' वैल्यू 1 '), (' 2 ',' value2 ') क्रमबद्ध करना है, तो' क्या करना है ')' '' '' '' * के विपरीत क्रम में –

8
sorted(result.iteritems(), key=lambda key_value: key_value[0]) 

हो जाएगा ताकि उत्पादन अनुसार क्रमबद्ध परिणाम अव्यवस्थित (परिभाषा के लिए)

आप OrderedDict का उपयोग कर सकते हैं, लेकिन शब्दकोश अवर्गीकृत रहेगा। यदि आप एक शब्दकोश के आदेश को बनाए रखना चाहते हैं, तो OrderedDict

वास्तव में उपयोग करते हैं, यदि आप प्रकार कुंजी द्वारा आप, key=... भाग को छोड़ सकता है क्योंकि तब दोहराया आइटम मूल्य द्वारा (क्या एनपीई का उपयोग करता है पहली कुंजी के द्वारा और बाद में हल कर रहे हैं उनके जवाब में)

+0

मैं व्यक्तिगत रूप से 'के लिए कुंजी = लैम्ब्डा (कुंजी, वैल) जाना चाहते हैं: वैल)' जो यह भी सही है, लेकिन आईएमएचओ भी अधिक स्पष्ट –

+1

@ जोन क्लेमेंट्स जो कि पाइथन 3 में बहिष्कृत है, इसलिए वर्तमान दृष्टिकोण बेहतर है – jamylak

+0

@jamylak: यह क्यों बहिष्कृत है? कोई संदर्भ? –

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