2012-08-01 11 views
14

आप नेस्टेड शब्दकोश के भीतरी मूल्य के आधार पर पाइथन शब्दकोश को कैसे क्रमबद्ध करते हैं?नेस्टेड शब्दकोश मानों के आधार पर पाइथन शब्दकोश को छंटनी

उदाहरण के लिए

, प्रकार नीचे mydictcontext के मूल्य पर आधारित:

mydict = { 
    'age': {'context': 2}, 
    'address': {'context': 4}, 
    'name': {'context': 1} 
} 

परिणाम इस तरह होना चाहिए:

{ 
    'name': {'context': 1}, 
    'age': {'context': 2}, 
    'address': {'context': 4}  
} 
+1

क्या आप एक सूची आउटपुट चाहते हैं? या एक शब्दकोश आउटपुट? – Deniz

उत्तर

15
>>> from collections import OrderedDict 
>>> mydict = { 
     'age': {'context': 2}, 
     'address': {'context': 4}, 
     'name': {'context': 1} 
} 
>>> OrderedDict(sorted(mydict.iteritems(), key=lambda x: x[1]['context'])) 
OrderedDict([('name', {'context': 1}), ('age', {'context': 2}), ('address', {'context': 4})]) 
5

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

+0

वैकल्पिक रूप से, कोई भी प्रत्येक कुंजी के मूल्य को देखने के लिए लैम्ब्डा का उपयोग करके चाबियों पर एक ग्रेनरी सूची समझ सकता है - और ऐसा करने में कठिनाई 'ऑर्डर्ड डिक्ट' का उपयोग करने के लिए एक महान सबक है। –

+0

अपडेट: पायथन 3.6 के रूप में, शब्दकोश सम्मिलन आदेश संरक्षित है, इसलिए यह कथन अब सत्य नहीं है। – pelson

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