पायथन में मूल्य के आधार पर एक शब्दकोश को कैसे क्रमबद्ध करें

परिचय

पायथन में एक शब्दकोश वस्तुओं का एक संग्रह है जो डेटा को कुंजी-मूल्य जोड़े के रूप में संग्रहीत करता है। पायथन 3.7 और बाद के संस्करणों में, शब्दकोशों को आइटम प्रविष्टि के क्रम से क्रमबद्ध किया जाता है। पहले के संस्करणों में, वे अनियंत्रित थे।

इस लेख में, हम इस पर एक नज़र डालेंगे कि हम किसी शब्दकोश को उनके मूल्यों के आधार पर कैसे क्रमबद्ध कर सकते हैं।

a . का उपयोग करके शब्दकोश को क्रमबद्ध करें एसटी पाश

हम a . की मदद से एक शब्दकोश को सॉर्ट कर सकते हैं for फंदा। सबसे पहले, हम का उपयोग करते हैं sorted() शब्दकोश के मूल्यों को क्रमबद्ध करने के लिए कार्य। फिर हम सॉर्ट किए गए मानों के माध्यम से लूप करते हैं, प्रत्येक मान के लिए कुंजी ढूंढते हैं। हम इन कुंजी-मूल्य जोड़े को क्रमबद्ध क्रम में एक नए शब्दकोश में जोड़ते हैं।

नोट: क्रम से लगाने से आप शब्दकोश को अपने स्थान पर फिर से क्रमित नहीं कर सकते। हम क्रमित युग्मों को पूरी तरह से नए, खाली शब्दकोश में लिख रहे हैं।

dict1 = {1: 1, 2: 9, 3: 4}
sorted_values = sorted(dict1.values()) 
sorted_dict = {}

for i in sorted_values:
    for k in dict1.keys():
        if dict1[k] == i:
            sorted_dict[k] = dict1[k]

print(sorted_dict)

यदि आप इसे पायथन दुभाषिया के साथ चलाते हैं तो आप देखेंगे:

{1: 1, 3: 4, 2: 9}

अब जब हमने देख लिया है कि लूप के साथ कैसे सॉर्ट किया जाता है, तो आइए एक अधिक लोकप्रिय विकल्प को देखें जो इसका उपयोग करता है sorted() समारोह.

शब्दकोश का उपयोग करके क्रमबद्ध करें क्रमबद्ध () समारोह

हमने पहले इस्तेमाल किया था sorted() किसी सरणी के मानों को सॉर्ट करने के लिए कार्य करता है। शब्दकोश को छांटते समय, हम एक और तर्क दे सकते हैं sorted() इस तरह से कार्य करें: sorted(dict1, key=dict1.get).

यहाँ, key एक ऐसा फ़ंक्शन है जिसे सॉर्ट करने के लिए मानों की तुलना करने से पहले प्रत्येक तत्व पर कॉल किया जाता है। get() शब्दकोश वस्तुओं पर विधि एक शब्दकोश की कुंजी का मान देता है।

RSI sorted(dict1, key=dict1.get) अभिव्यक्ति उन चाबियों की सूची लौटाएगी जिनके मूल्यों को क्रम में क्रमबद्ध किया गया है। वहां से, हम एक नया, क्रमबद्ध शब्दकोश बना सकते हैं:

dict1 = {1: 1, 2: 9, 3: 4}
sorted_dict = {}
sorted_keys = sorted(dict1, key=dict1.get)  

for w in sorted_keys:
    sorted_dict[w] = dict1[w]

print(sorted_dict) 

ऊपर दिए sorted() फ़ंक्शन ने उस कोड की मात्रा को कम कर दिया है जिसे हमें उपयोग करते समय लिखना था for लूप हालाँकि, हम आगे जोड़ सकते हैं sorted() के साथ कार्य करते हैं itemgetter() मूल्यों के आधार पर शब्दकोशों को छाँटने के लिए एक अधिक संक्षिप्त समाधान के लिए कार्य।

शब्दकोश का उपयोग करके क्रमबद्ध करें ऑपरेटर मॉड्यूल और आइटमगेटर ()

RSI operator मॉड्यूल में शामिल हैं itemgetter() समारोह। यह फ़ंक्शन एक कॉल करने योग्य ऑब्जेक्ट देता है जो किसी ऑब्जेक्ट से कोई आइटम लौटाता है।

उदाहरण के लिए, आइए उपयोग करें itemgetter() एक कॉल करने योग्य वस्तु बनाने के लिए जो किसी भी शब्दकोश के मूल्य को एक कुंजी के साथ लौटाता है: 2:

import operator

dict1 = {1: 1, 2: 9}
get_item_with_key_2 = operator.itemgetter(2)

print(get_item_with_key_2(dict1))  

प्रत्येक शब्दकोश की पहुंच है items() तरीका। यह फ़ंक्शन किसी शब्दकोश के कुंजी-मूल्य जोड़े को टुपल्स की सूची के रूप में लौटाता है। हम टुपल्स की सूची को का उपयोग करके सॉर्ट कर सकते हैं itemgetter() टपल के दूसरे मान को खींचने के लिए कार्य करता है अर्थात शब्दकोश में कुंजियों का मान।

एक बार इसे सॉर्ट करने के बाद, हम उन मानों के आधार पर एक शब्दकोश बना सकते हैं:

import operator

dict1 = {1: 1, 2: 9, 3: 4}
sorted_tuples = sorted(dict1.items(), key=operator.itemgetter(1))
print(sorted_tuples)  
sorted_dict = {k: v for k, v in sorted_tuples}

print(sorted_dict) 

बहुत कम प्रयास के साथ, हमारे पास मूल्यों द्वारा क्रमबद्ध एक शब्दकोश है!

के रूप में key तर्क किसी भी फ़ंक्शन को स्वीकार करता है, हम शब्दकोश मानों को वापस करने के लिए लैम्ब्डा फ़ंक्शंस का उपयोग कर सकते हैं ताकि उन्हें सॉर्ट किया जा सके। आइए देखें कैसे।

लैम्ब्डा फ़ंक्शन का उपयोग करके शब्दकोश को क्रमबद्ध करें

लैम्ब्डा फ़ंक्शन अनाम, या अनाम, पायथन में फ़ंक्शन हैं। हम लैम्ब्डा फंक्शन का उपयोग डिक्शनरी आइटम का मूल्य प्राप्त करने के लिए बिना आयात किए कर सकते हैं operator के लिए मॉड्यूल itemgetter(). यदि आप लैम्ब्डा के बारे में अधिक जानना चाहते हैं, तो आप हमारे गाइड में उनके बारे में पढ़ सकते हैं पायथन में लैम्ब्डा फ़ंक्शन.

सर्वोत्तम प्रथाओं, उद्योग-स्वीकृत मानकों और शामिल चीट शीट के साथ, Git सीखने के लिए व्यावहारिक मार्गदर्शिका देखें। Googling Git कमांड को रोकें और वास्तव में सीखना यह!

आइए लैम्ब्डा फ़ंक्शन का उपयोग करके मानों के आधार पर एक शब्दकोश को क्रमबद्ध करें key का तर्क sorted():

dict1 = {1: 1, 2: 9, 3: 4}
sorted_tuples = sorted(dict1.items(), key=lambda item: item[1])
print(sorted_tuples)  
sorted_dict = {k: v for k, v in sorted_tuples}

print(sorted_dict)  

ध्यान दें कि जिन विधियों की हमने अभी तक चर्चा की है, वे केवल पायथन 3.7 और बाद के संस्करण के साथ काम करती हैं। आइए देखें कि हम पायथन के पुराने संस्करणों के लिए क्या कर सकते हैं।

क्रमबद्ध मानों के साथ एक नया शब्दकोश लौटाना

किसी शब्दकोश को मानों के आधार पर छाँटने के बाद, 3.7 से पहले पायथन संस्करणों में एक क्रमबद्ध शब्दकोश रखने के लिए, आपको इसका उपयोग करना होगा OrderedDict - में उपलब्ध है collections मापांक। ये ऑब्जेक्ट डिक्शनरी हैं जो सम्मिलन के क्रम को बनाए रखते हैं।

यहाँ छँटाई और उपयोग करने का एक उदाहरण है OrderedDict:

import operator
from collections import OrderedDict

dict1 = {1: 1, 2: 9, 3: 4}
sorted_tuples = sorted(dict1.items(), key=operator.itemgetter(1))
print(sorted_tuples)  

sorted_dict = OrderedDict()
for k, v in sorted_tuples:
    sorted_dict[k] = v

print(sorted_dict)  

निष्कर्ष

इस ट्यूटोरियल ने दिखाया कि कैसे एक शब्दकोश को उसके मूल्यों के आधार पर क्रमबद्ध किया जा सकता है। हमने पहले लूप के लिए दो का उपयोग करके एक शब्दकोश को सॉर्ट किया। फिर हमने का उपयोग करके अपनी छँटाई में सुधार किया sorted() समारोह। हमने भी देखा है itemgetter() से कार्य करते हैं operator मॉड्यूल हमारे समाधान को और अधिक संक्षिप्त बना सकता है।

अंत में, हमने अपने समाधान को 3.7 से कम पायथन संस्करणों पर काम करने के लिए अनुकूलित किया।

की विविधताएं sorted() किसी शब्दकोश को मानों के आधार पर छाँटने के लिए फ़ंक्शन सबसे लोकप्रिय और विश्वसनीय हैं।

समय टिकट:

से अधिक स्टैकब्यूज