How to reorder a list in Python based on its content -


मेरे पास इस तरह अजगर में शब्दकोशों की एक सूची है;

  l = [{'name': 'John', 'age': 23}, {'name': 'स्टीव', 'उम्र': 35}, {'name': 'हेलेन'}, {'नाम': 'जॉर्ज'}, {'नाम': 'जेसिका', 'उम्र': 23}]  

मैं यहां क्या हासिल करने की कोशिश कर रहा हूं एल के तत्वों को इस तरह पुन: क्रमबद्ध करें कि प्रत्येक प्रविष्टि में कुंजी आयु इस तरह से सूची के अंत में चली जाए;

अंतिम परिणाम:

  l = [['' नाम ':' हेलेन '}, {' नाम ':' जॉर्ज '}, {' नाम ':' जेसिका ',' उम्र ': 23}, { 'नाम': 'जॉन', 'उम्र': 23}, {'नाम': 'स्टीव', 'उम्र': 35}]  

मुझे यह कैसे करना चाहिए?

आप सूची को सॉर्ट कर सकते हैं:

  l.sort (key = lambda डी: 'आयु' में डी)  

कुंजी <या true या गलत , की उपस्थिति के आधार पर देता है 'उम्र' कुंजी; सत्य को गलत के बाद सॉर्ट किया गया है। अजगर का प्रकार स्थिर है, शेष शेष क्रमिक क्रम को छोड़कर।

डेमो:

  & gt; & gt; & gt; Pprint आयात pprint से & gt; & gt; & gt; L = [['नाम': 'जॉन', 'आयु': 23}, ... {'नाम': 'स्टीव', 'उम्र': 35}, ... {'नाम': 'हेलेन'} , ... {'नाम': 'जॉर्ज'}, ... {'नाम': 'जेसिका', 'उम्र': 23}]> gt; & gt; & gt; L.sort (कुंजी = लैम्ब्डा डी: 'उम्र' डी में)> gt; & gt; & gt; ('हेन'), {'नाम': 'जॉर्ज'}, {'उम्र': 23, 'नाम': 'जॉन'}, {'उम्र': 35, 'नाम यदि आप  भी  उम्र से सॉर्ट करना चाहते थे, तो '' स्टीव '', '' उम्र ': 23,' नाम ':' जेसिका '}]  

फिर आयु के मूल्य को पुनः प्राप्त करें और उन प्रविष्टियों के लिए एक उपयुक्त स्थिर प्रहरी वापस लौटाएं जिनके पास आयु नहीं है, लेकिन जो पहले सॉर्ट किया जाएगा। उदाहरण के लिए: float ('- inf') हमेशा किसी अन्य नंबर से पहले सॉर्ट किया जाएगा, उदाहरण के लिए:

  l.sort (key = lambda d: d.get (' फिर से, उम्र के बिना प्रविष्टियों को उनके मूल सापेक्ष क्रम में छोड़ दिया जाता है:  
  & gt; & gt;  
; & gt; L.sort (कुंजी = लैम्ब्डा डी: डी .get ('उम्र', फ्लोट ('-' INF)))> gt; & gt; & gt; ('हेन'), {'नाम': 'जॉर्ज'}, {'उम्र': 23, 'नाम': 'जॉन'}, {'उम्र': 23, 'नाम ':' जेसिका '}, {' उम्र ': 35,' नाम ':' स्टीव '}]

Comments

Popular posts from this blog

java - Can't add JTree to JPanel of a JInternalFrame -

javascript - data.match(var) not working it seems -

javascript - How can I pause a jQuery .each() loop, while waiting for user input? -