مشق ڈکشنری پر مشق

محمداحمد

لائبریرین
1.1 ۔ یہ ایک چھوٹا سا کوڈ ہے جو کسی بھی لسٹ کے ارکان کی مدد سے ڈکشنری بناتا ہے۔
PHP:
>>> L = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n']
>>> d = {}
>>> for i in range(0,(len(x1)-1),2):
    x2[x3[i]] = x4[i+1]

اس کا نتیجہ کچھ یوں ہوگا۔
PHP:
>>> d
{'a': 'b', 'c': 'd', 'e': 'f', 'g': 'h', 'i': 'j', 'k': 'l', 'm': 'n'}

اس کوڈ میں کچھ کیرکٹرز کو بدل کر x1, x2, x3, اور x4 کے فرضی نام دے دیئے گئے ہیں۔ آپ نے یہ بتانا ہے کہ ان عارضی ناموں کے بجائے ہم کون کون سے کیرکٹرز لکھیں کہ ہمارا کوڈ ٹھیک ہو جائے اور دئیے گئے نتیجے کے حساب سے کام کرنے لگے۔
کوڈ:
x1 = ?
 
x2 = ?
 
x3 = ?
 
x4 = ?
 

محمداحمد

لائبریرین
1.2۔ درج ذیل کوڈ دیکھیے:

PHP:
>>> d = {'a': 1, 'b': 2}
>>> # MISSING CODE
>>> d
{'a': 1, 'c': 3, 'b': 2}

دوسری رو میں ایک اسائنمینٹ کا اظہاریہ لکھا گیا ہے۔ جو فی الحال حذف کردیا گیا ہے۔

ڈکشنری کا نتیجہ دیکھ کر گمشدہ اظہاریہ لکھیے۔
 

محمداحمد

لائبریرین
1.3۔ درج ذیل کوڈ دیکھیے:
PHP:
>>> d = {'a': 1, 'b': 2}
>>> # MISSING  CODE
>>> d
{'a': 1, 'b': 3}

یہاں بھی دوسری رو میں ایک اسائنمینٹ کا اظہاریہ لکھا گیا ہے۔ جو فی الحال حذف کردیا گیا ہے۔

ڈکشنری کا نتیجہ دیکھ کر گمشدہ اظہاریہ لکھیے۔
 

محمداحمد

لائبریرین
1.4۔ اس کوڈ اور اس کے نتیجے کو بغور دیکھیے:

PHP:
>>> L = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
>>> d = {}
>>> for i in range((len(L))):
    d[L[i]] = L[len(L)-1-i]
 
 
>>> d
{'a': 'z', 'c': 'x', 'b': 'y', 'e': 'v', 'd': 'w', 'g': 't', 'f': 'u', 'i': 'r', 'h': 's', 'k': 'p', 'j': 'q', 'm': 'n', 'l': 'o', 'o': 'l', 'n': 'm', 'q': 'j', 'p': 'k', 's': 'h', 'r': 'i', 'u': 'f', 't': 'g', 'w': 'd', 'v': 'e', 'y': 'b', 'x': 'c', 'z': 'a'}
>>>

اور بتائیے کہ یہ کوڈ کیا کام کر رہا ہے؟ اورکیسے کر رہا ہے۔ (یہ سوال اختیاری ہے نہ بھی کریں تو کوئی مسئلہ نہیں ہے۔ :) )
 

عائشہ عزیز

لائبریرین
1.1 ۔ یہ ایک چھوٹا سا کوڈ ہے جو کسی بھی لسٹ کے ارکان کی مدد سے ڈکشنری بناتا ہے۔
PHP:
>>> L = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n']
>>> d = {}
>>> for i in range(0,(len(x1)-1),2):
    x2[x3[i]] = x4[i+1]

اس کا نتیجہ کچھ یوں ہوگا۔
PHP:
>>> d
{'a': 'b', 'c': 'd', 'e': 'f', 'g': 'h', 'i': 'j', 'k': 'l', 'm': 'n'}

اس کوڈ میں کچھ کیرکٹرز کو بدل کر x1, x2, x3, اور x4 کے فرضی نام دے دیئے گئے ہیں۔ آپ نے یہ بتانا ہے کہ ان عارضی ناموں کے بجائے ہم کون کون سے کیرکٹرز لکھیں کہ ہمارا کوڈ ٹھیک ہو جائے اور دئیے گئے نتیجے کے حساب سے کام کرنے لگے۔
کوڈ:
x1 = ?
 
x2 = ?
 
x3 = ?
 
x4 = ?

مسنگ کیرکٹرز کچھ یوں ہوں گے۔

PHP:
x1 = L
 
x2 = d
 
x3 = L
 
x4 = L

اور کوڈ یوں بنے گا۔

PHP:
L = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n']
d = {}
for i in range(0,(len(L)-1),2):
    d[L[i]] = L[i+1]

چونکہ ہم لسٹ کے ایلیمنٹس کو ایکسیس کرکے ڈکشنری بنا رہے ہے۔ اس لیے فور لوپ میں i کی رینج لسٹ کے پہلے ایلیمنٹ سے آخری ایلیمنٹ تک ہوگی جس میں دو دو کا وقفہ ہے۔ اس طرح x1 کی جگہ لسٹ کا نام ہوگا۔
اور نیچے ہم ڈکشنری میں ویلیوز سٹور کر رہے ہیں جو پہلے خالی تھی۔ اس لیے x2 کی جگہ ڈکشنری کا نام ہوگا۔ اور اندر بھی لسٹ کے ایلیمنٹس یوز ہو رہے ہیں اس لیے x3 اور x4 کی جگہ بھی L ہوگا۔

نتائج :
PHP:
>>> d
{'a': 'b', 'c': 'd', 'e': 'f', 'g': 'h', 'i': 'j', 'k': 'l', 'm': 'n'}
>>>

محمداحمد بھیاا
ایک چیز کی سمجھ نہیں آئی۔ فور لوپ کی رینج میں ہم نے ایک جو لسٹ کی لینتھ والا ایکسپریشن لکھا ہے۔ اس کو بریکٹ میں کرنے کا کا مقصد؟
پہلے تو ہم ویسے ہی لکھتے تھے ناں!
اور یہ بریکٹس ختم کرنے سے بھی رزلٹ سیم آ رہا ہے۔
PHP:
L = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n']
d = {}
for i in range(0, len(L)-1,2):
    d[L[i]] = L[i+1]
 
>>> d
{'a': 'b', 'c': 'd', 'e': 'f', 'g': 'h', 'i': 'j', 'k': 'l', 'm': 'n'}
 

عائشہ عزیز

لائبریرین
1.2۔ درج ذیل کوڈ دیکھیے:

PHP:
>>> d = {'a': 1, 'b': 2}
>>> # MISSING CODE
>>> d
{'a': 1, 'c': 3, 'b': 2}

دوسری رو میں ایک اسائنمینٹ کا اظہاریہ لکھا گیا ہے۔ جو فی الحال حذف کردیا گیا ہے۔

ڈکشنری کا نتیجہ دیکھ کر گمشدہ اظہاریہ لکھیے۔

PHP:
d = {'a': 1, 'b': 2}
d['c'] = 3
 
>>> d
{'a': 1, 'b': 2, 'c': 3}
>>>
 

عائشہ عزیز

لائبریرین
1.3۔ درج ذیل کوڈ دیکھیے:
PHP:
>>> d = {'a': 1, 'b': 2}
>>> # MISSING  CODE
>>> d
{'a': 1, 'b': 3}

یہاں بھی دوسری رو میں ایک اسائنمینٹ کا اظہاریہ لکھا گیا ہے۔ جو فی الحال حذف کردیا گیا ہے۔

ڈکشنری کا نتیجہ دیکھ کر گمشدہ اظہاریہ لکھیے۔

PHP:
d = {'a': 1, 'b': 2}
d['b'] = 3
 
>>> d
{'a': 1, 'b': 3}
 

محمداحمد

لائبریرین
مسنگ کیرکٹرز کچھ یوں ہوں گے۔

PHP:
x1 = L
 
x2 = d
 
x3 = L
 
x4 = L

اور کوڈ یوں بنے گا۔

PHP:
L = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n']
d = {}
for i in range(0,(len(L)-1),2):
    d[L[i]] = L[i+1]

چونکہ ہم لسٹ کے ایلیمنٹس کو ایکسیس کرکے ڈکشنری بنا رہے ہے۔ اس لیے فور لوپ میں i کی رینج لسٹ کے پہلے ایلیمنٹ سے آخری ایلیمنٹ تک ہوگی جس میں دو دو کا وقفہ ہے۔ اس طرح x1 کی جگہ لسٹ کا نام ہوگا۔
اور نیچے ہم ڈکشنری میں ویلیوز سٹور کر رہے ہیں جو پہلے خالی تھی۔ اس لیے x2 کی جگہ ڈکشنری کا نام ہوگا۔ اور اندر بھی لسٹ کے ایلیمنٹس یوز ہو رہے ہیں اس لیے x3 اور x4 کی جگہ بھی L ہوگا۔

نتائج :
PHP:
>>> d
{'a': 'b', 'c': 'd', 'e': 'f', 'g': 'h', 'i': 'j', 'k': 'l', 'm': 'n'}
>>>

محمداحمد بھیاا
ایک چیز کی سمجھ نہیں آئی۔ فور لوپ کی رینج میں ہم نے ایک جو لسٹ کی لینتھ والا ایکسپریشن لکھا ہے۔ اس کو بریکٹ میں کرنے کا کا مقصد؟
پہلے تو ہم ویسے ہی لکھتے تھے ناں!
اور یہ بریکٹس ختم کرنے سے بھی رزلٹ سیم آ رہا ہے۔
PHP:
L = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n']
d = {}
for i in range(0, len(L)-1,2):
    d[L[i]] = L[i+1]
 
>>> d
{'a': 'b', 'c': 'd', 'e': 'f', 'g': 'h', 'i': 'j', 'k': 'l', 'm': 'n'}

ٹھیک۔۔۔!

جی یہ بریکٹس اضافی ہی ہیں نہ بھی ہوں تو کوئی فرق نہیں پڑتا۔
 

عائشہ عزیز

لائبریرین
1.4۔ اس کوڈ اور اس کے نتیجے کو بغور دیکھیے:

PHP:
>>> L = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
>>> d = {}
>>> for i in range((len(L))):
    d[L[i]] = L[len(L)-1-i]
 
 
>>> d
{'a': 'z', 'c': 'x', 'b': 'y', 'e': 'v', 'd': 'w', 'g': 't', 'f': 'u', 'i': 'r', 'h': 's', 'k': 'p', 'j': 'q', 'm': 'n', 'l': 'o', 'o': 'l', 'n': 'm', 'q': 'j', 'p': 'k', 's': 'h', 'r': 'i', 'u': 'f', 't': 'g', 'w': 'd', 'v': 'e', 'y': 'b', 'x': 'c', 'z': 'a'}
>>>

اور بتائیے کہ یہ کوڈ کیا کام کر رہا ہے؟ اورکیسے کر رہا ہے۔ (یہ سوال اختیاری ہے نہ بھی کریں تو کوئی مسئلہ نہیں ہے۔ :) )
کیا کام کرتا ہے؟
یہ کوڈ لسٹ کے آغاز سے ایلیمنٹس کو بطور key لیتا ہے اور پھر لسٹ کے اختتام سے ان کیز کو ویلیوز اسائن کرتا ہے اور اس طرح key-value pair بناتا جاتا ہے۔ یہاں تک کہ i کی ویلیو 25 ہو جائے جو کہ لسٹ L کی لمبائی ہے۔ (0 سے 25) جب i کی ویلیو 13 ہوتی ہے تو اب کیز اور ویلیوز کی جگہ بدل جاتی ہے۔ پہلے جو ویلیوز تھیں وہ کیز بن جاتی ہیں اور ان کو وہ ویلیوز اسائن ہوتی ہیں جو پہلے کیز تھیں۔
کیسے کام کرتا ہے؟
سب سے پہلے ہم نے ایک لسٹ بنائی جو کہ سارے انگریزی حروف تہجی پر مشتمل ہے۔ ایک خالی ڈکشنری بنائی جس میں بعد میں ہم ویلیوز اسٹور کرتے جائیں گے۔ پھر فور لوپ کے ذریعے لسٹ کو ایکسیس کیا اور ڈکشنری اپڈیٹ کے طریقے پر عمل کرتے ہوئے خالی ڈکشنری میں باری باری آئٹمز اسٹور کرائے۔ مثال کے طور پر
جب پہلے i کی ویلیو 0 تھی تو اس نے لسٹ کے زیروتھ ایلیمنٹ کو بطور key لیا اور اس کو ایک ویلیو اسائن کی جو کہ لسٹ کی آخری ویلیو میں سے i کو (جو کہ 0 ہے) منفی کرنے سے حاصل ہوئی۔ دیکھیے

PHP:
d[L[0]] = L[len(L)-1-0]
 
OR
 
d[L[0]] = L[len(L)]-1]
 
since L[0] = 'a'
and L[len(L)-1] ==> L[25] ==> 'z'
 
so
d['a'] = 'z'
 
and now
>>>d
>>>{'a': 'z'}

اسی طرح جب i کی ویلیو 1 ہوئی تو اس نے لسٹ کے دوسرے ایلیمنٹ'b' کو بطور key لیا اور اس کو لسٹ کی آخری ویلیو میں سے ایک منفی کرنے سے(کیونکہ i کی ویلیو اب 1 ہے) حاصل ہونے والی ویلیو اسائن کی۔

PHP:
d[L[1]] = L[len(L)-1-1]
 
d['b'] = L[len(L)-2] = L['y']
 
and 'd' becomes
 
>>>d
>>>{'a': 'z', 'b': 'y'}

اس طرح یہ سلسلہ چلتا رہا اور جب i کی ویلیو 13 ہوئی تو یہ ترتیب الٹ گئی جیسے کہ اوپر بتایا گیا ہے۔ دیکھیے


PHP:
d[L[13]] = L[len(L)-1-13]
 
>>> L[13]
'n'
>>> L[-14]
'm'
 
OR
>>> L[len(L)-1-13]
'm'
 
so
 
d['n'] = 'm'
 
Now here 'n' is the key and 'm' is the value assign to that key.

اس طرح اب یہ پراسیس الٹ چلتا رہا یہاں تک کہ i کی ویلیو 25 ہوئی۔ اور

PHP:
d[L[25]] = L[len(L)-1-25]
 
>>> L[25]
'z'
>>> L[len(L)-1-25]
'a'
 
d['z'] = 'a'


اس طرح نئی ڈکشنری d میں ہمیں 26 key-value pair حاصل ہوئے۔
 
Top