القاموس القاموس هو بمثابة كتاب عنونة حيث يمكنك أن تجد عنوان أو تفاصيل للاتصال مع شخص عن طريق معرفه اسمه /اسمها. مثلا؛ نحن نتشارك المفاتيح (الاسم) مع القيم (التفاصيل). علما بأن المفتاح يجب أن يكون فريدا unique حيث أنه لا يمكنك الحصول على معلومات صحيحة إذا كان لديك شخصان بنفس الاسم بالضبط .
علما انه يمكنك استخدام ojects ثابتة فقط (مثل السلاسل النصية) لمفاتيح القاموس ولكن يمكنك استخدام ojects ثابتة أو قابلة للتغيير لقيم القاموس يمكننا أن نترجم ذلك بقولنا أنه ينبغي ان لا تستخدم سوى اشياء بسيطة للمفاتيح.
زوج من المفاتيح والقيم المذكوره في القاموس باستخدام العبارة d = {key1 : value1, key2 : value2 } لاحظ أن أزواج المفتاح/القيمة منفصلين عن طريق النقطتين والأزواج أنفسهم منفصلان عن طريق فاصلة , و كل هذا داخل في زوج من الاقواس المجعدة .
تذكر ان أزواج key/valueفي القاموس ليست لها أي طريقة ترتيب. اذا اردت ترتيبا معينا، سيتعين عليك ترتيبها بنفسك قبل استعمالها.
القواميس ال ستقوم باستخدامها تعتبر أمثلة/كائنات instances/objects من الطبقة dict
مثال 9.4. استخدام القواميس
#!/usr/bin/python # Filename: using_dict.py # 'ab' is short for 'a'ddress'b'ook ab = { 'Swaroop' : '[email protected]', 'Larry' : '[email protected]', 'Matsumoto' : '[email protected]', 'Spammer' : '[email protected]' } print "Swaroop's address is %s" % ab['Swaroop'] # Adding a key/value pair ab['Guido'] = '[email protected]' # Deleting a key/value pair del ab['Spammer'] print '\nThere are %d contacts in the address-book\n' % len(ab) for name, address in ab.items(): print 'Contact %s at %s' % (name, address) if 'Guido' in ab: # OR ab.has_key('Guido') print "\nGuido's address is %s" % ab['Guido']
$ python using_dict.py Swaroop's address is [email protected] There are 4 contacts in the address-book Contact Swaroop at [email protected] Contact Matsumoto at [email protected] Contact Larry at [email protected] Contact Guido at [email protected] Guido's address is [email protected]
قمنا بصنع القاموس ab باستخدام الترقيم الذي سبق مناقشته. ثم شغلنا أزواج key/value من خلال تحديد المفتاح باستخدام عامل الفهرسة indexing operator كما نوقش في الكلام عن lists و tuples. نلاحظ ان التركيب بسيط جدا للقواميس كذلك.
ويمكننا ان نضيف أزواج جديدة من key/value ببساطة عن طريق استخدام indexing operator للوصول الى مفتاح واسناد قيمة إليه، كما فعلنا ل Guido في الحالة المذكورة اعلاه.
يمكننا حذف أزواج المفتاح/القيمة باستخدام صديقنا القديم البيان del. نحن ببساطة نحديد القاموس indexing operator لإزالة المفتاح وتمرير ذلك إلى البيان del. ليست هناك حاجة لمعرفة القيمه المقابلة للمفتاح في هذه العملية.
بعد ذلك نصل إلى كل زوج من key/value في القاموس باستخدام items method من القاموس التي تعيد قائمة من ال tuples حيث كل tuple يحتوي زوجا من البنود – والمفتاح متبوعا بقيمة. نسحب هذا الزوج ونسنده إلى اسم المتغيرات والعنوان المقابل لكل زوج باستخدام الحلقة for..in، ثم نطبع هذه القيم في كتلةfor-block
يمكننا معرفة ما اذا كان زوج key/value موجود باستخدام المشغل inاو حتى طريقة has_key من ال class dict"" تستطيع ان ترى الوثائق للاطلاع على القائمة الكاملة للطرق من ال class dict باستخدام help(dict)
Keyword Arguments and Dictionaries. على صعيد آخر نلاحظ، ان كنت قد استخدمت keyword arguments في الدوال الخاصة بك، ولقد سبق ان استخدمت قواميس! فقط فكر في ذلك – زوج key/value محدد من قِبلِك في قائمة بارامترات تعريف الدالة، وعند تشغيل المتغيرات بداخل الدالة، وهو مجرد مفتاح الوصول إلى القاموس (وهو ما يسمى symbol table في مصطلح تصميم المترجم ) .