ازگر میں ایک لغت کو قدر کے لحاظ سے ترتیب دینے کا طریقہ

تعارف

Python میں ایک ڈکشنری آئٹمز کا ایک مجموعہ ہے جو ڈیٹا کو کلیدی قدر کے جوڑوں کے طور پر محفوظ کرتا ہے۔ Python 3.7 اور بعد کے ورژن میں، لغات کو آئٹم داخل کرنے کی ترتیب کے مطابق ترتیب دیا جاتا ہے۔ پہلے کے ورژن میں، وہ بے ترتیب تھے۔

اس مضمون میں، ہم اس پر ایک نظر ڈالیں گے کہ ہم ان اقدار کی بنیاد پر لغت کو کس طرح ترتیب دے سکتے ہیں۔

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() ڈکشنری آبجیکٹ پر طریقہ لغت کی کلید کی قدر لوٹاتا ہے۔

۔ 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 loops تاہم، ہم مزید جمع کر سکتے ہیں sorted() کے ساتھ فنکشن itemgetter() اقدار کے لحاظ سے لغات کو چھانٹنے کے لیے مزید جامع حل کے لیے فنکشن۔

کا استعمال کرتے ہوئے ڈکشنری ترتیب دیں۔ آپریٹر ماڈیول اور آئٹم گیٹر()

۔ 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 argument کسی بھی فنکشن کو قبول کرتا ہے، ہم لغت کی اقدار کو واپس کرنے کے لیے لیمبڈا فنکشنز کا استعمال کر سکتے ہیں تاکہ ان کو ترتیب دیا جا سکے۔ آئیے دیکھتے ہیں کہ کیسے۔

لیمبڈا فنکشن کا استعمال کرتے ہوئے لغت کو ترتیب دیں۔

لیمبڈا فنکشنز گمنام، یا بے نام ہیں، ازگر میں فنکشنز ہیں۔ ہم لغت کے آئٹم کی قیمت حاصل کرنے کے لیے لیمبڈا فنکشنز کو درآمد کیے بغیر استعمال کر سکتے ہیں۔ operator کے لئے ماڈیول itemgetter(). اگر آپ لیمبڈا کے بارے میں مزید جاننا چاہتے ہیں، تو آپ ان کے بارے میں ہماری گائیڈ میں پڑھ سکتے ہیں۔ ازگر میں لیمبڈا کے افعال.

بہترین طرز عمل، صنعت کے لیے منظور شدہ معیارات، اور چیٹ شیٹ کے ساتھ 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)  

نوٹ کریں کہ جن طریقوں پر ہم نے اب تک بات کی ہے وہ صرف Python 3.7 اور بعد میں کام کرتے ہیں۔ آئیے دیکھتے ہیں کہ ہم Python کے پہلے ورژن کے لیے کیا کر سکتے ہیں۔

ترتیب شدہ اقدار کے ساتھ ایک نئی لغت کی واپسی

اقدار کے لحاظ سے لغت کو ترتیب دینے کے بعد، 3.7 سے پہلے Python ورژن میں ترتیب شدہ لغت رکھنے کے لیے، آپ کو استعمال کرنا ہوگا۔ 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() فنکشن ایک لغت کو اقدار کے لحاظ سے ترتیب دینے کے لیے سب سے زیادہ مقبول اور قابل اعتماد ہیں۔

ٹائم اسٹیمپ:

سے زیادہ Stackabuse