पाइथन डिक्शनरी, जितनी शक्तिशाली हैं, उतनी ही स्वाभाविक रूप से असंगठित भी हैं। इसका मतलब है कि आप सीधे डिक्शनरी को सॉर्ट नहीं कर सकते; हालाँकि, आप इसके मानों के आधार पर आसानी से एक क्रमबद्ध प्रतिनिधित्व प्राप्त कर सकते हैं। यह लेख इसे प्राप्त करने के कई कुशल तरीकों का पता लगाता है, जो विभिन्न आवश्यकताओं और पाइथन संस्करणों को पूरा करता है।
विषयसूची
- क्रमबद्ध मानों को निकालना
operator.itemgetter
के साथ सॉर्टिंग- लैम्ब्डा फ़ंक्शन के साथ सॉर्टिंग
- क्रमबद्ध डिक्शनरी बनाना
क्रमबद्ध मानों को निकालना
यदि आपको केवल क्रमबद्ध मानों की ही आवश्यकता है, कुंजी-मान संबंधों को संरक्षित किए बिना, तो यह सबसे सरल और सबसे कुशल तरीका है:
my_dict = {'apple': 5, 'banana': 2, 'cherry': 8, 'date': 1}
sorted_values = sorted(my_dict.values())
print(sorted_values) # आउटपुट: [1, 2, 5, 8]
बिल्ट-इन sorted()
फ़ंक्शन सीधे डिक्शनरी के मानों पर काम करता है, एक नई क्रमबद्ध सूची देता है। यह विधि आदर्श है जब आपको मूल कुंजी-मान जोड़ियों को बनाए रखने की आवश्यकता नहीं होती है।
operator.itemgetter
के साथ सॉर्टिंग
अधिक नियंत्रण के लिए, विशेष रूप से अवरोही क्रम में सॉर्टिंग करते समय, operator.itemgetter
एक स्वच्छ और कुशल समाधान प्रदान करता है। यह एक कॉल करने योग्य ऑब्जेक्ट बनाता है जो प्रत्येक कुंजी-मान जोड़ी से मान निकालता है:
import operator
my_dict = {'apple': 5, 'banana': 2, 'cherry': 8, 'date': 1}
sorted_items = sorted(my_dict.items(), key=operator.itemgetter(1))
print(sorted_items) # आउटपुट: [('date', 1), ('banana', 2), ('apple', 5), ('cherry', 8)]
sorted_items_desc = sorted(my_dict.items(), key=operator.itemgetter(1), reverse=True)
print(sorted_items_desc) # आउटपुट: [('cherry', 8), ('apple', 5), ('banana', 2), ('date', 1)]
यह मान (प्रत्येक टुपल का दूसरा तत्व, सूचकांक 1) के आधार पर डिक्शनरी आइटम (कुंजी-मान जोड़े) को क्रमबद्ध करता है। reverse=True
अवरोही क्रम सॉर्टिंग को सक्षम करता है। परिणाम (कुंजी, मान) टुपल्स की एक सूची है।
लैम्ब्डा फ़ंक्शन के साथ सॉर्टिंग
सॉर्टिंग कुंजी को परिभाषित करने के लिए एक लैम्ब्डा फ़ंक्शन एक संक्षिप्त, इनलाइन विकल्प प्रदान करता है:
my_dict = {'apple': 5, 'banana': 2, 'cherry': 8, 'date': 1}
sorted_items = sorted(my_dict.items(), key=lambda item: item[1])
print(sorted_items) # आउटपुट: [('date', 1), ('banana', 2), ('apple', 5), ('cherry', 8)]
sorted_items_desc = sorted(my_dict.items(), key=lambda item: item[1], reverse=True)
print(sorted_items_desc) # आउटपुट: [('cherry', 8), ('apple', 5), ('banana', 2), ('date', 1)]
यह operator.itemgetter
के समान परिणाम प्राप्त करता है, लेकिन कुंजी फ़ंक्शन सीधे sorted()
के भीतर परिभाषित किया गया है, जो सरल मामलों के लिए अधिक कॉम्पैक्ट समाधान प्रदान करता है।
क्रमबद्ध डिक्शनरी बनाना
यदि आपको एक ऐसी डिक्शनरी की आवश्यकता है जो क्रमबद्ध क्रम को बनाए रखती है, तो पाइथन 3.7+ डिक्शनरी स्वाभाविक रूप से सम्मिलन क्रम को संरक्षित करती हैं। पुराने संस्करणों के लिए या जहाँ गारंटीकृत क्रम महत्वपूर्ण है, आप एक डिक्शनरी कॉम्प्रिहेंशन का उपयोग कर सकते हैं:
my_dict = {'apple': 5, 'banana': 2, 'cherry': 8, 'date': 1}
sorted_dict = {k: v for k, v in sorted(my_dict.items(), key=lambda item: item[1])}
print(sorted_dict) # आउटपुट: {'date': 1, 'banana': 2, 'apple': 5, 'cherry': 8}
यह कुशलतापूर्वक क्रमबद्ध मानों के अनुसार क्रमबद्ध कुंजी-मान जोड़े के साथ एक नई डिक्शनरी बनाता है।
इस लेख ने मान द्वारा पाइथन डिक्शनरी को सॉर्ट करने के विभिन्न तरीकों को प्रस्तुत किया है, जो विभिन्न संदर्भों और पाइथन संस्करणों के लिए उपयुक्त समाधान प्रदान करता है। अपनी विशिष्ट आवश्यकताओं और आपके द्वारा उपयोग किए जा रहे पाइथन के संस्करण के लिए सबसे उपयुक्त विधि चुनना याद रखें।