البرمجة

فهم القواميس في بايثون 3

فهم القواميس في بايثون 3

تعتبر القواميس (Dictionaries) في لغة البرمجة بايثون أحد الهياكل البيانية الأساسية التي توفر طريقة مرنة وقوية لتخزين البيانات بطريقة يمكن الوصول إليها بسهولة. يعد القاموس من أنواع البيانات القوية التي يمكن استخدامها في العديد من التطبيقات البرمجية المختلفة مثل تخزين إعدادات المستخدم، أو إدارة البيانات باستخدام المفاتيح والقيم، وغيرها من الاستخدامات المتنوعة.

مفهوم القواميس في بايثون

في بايثون، القاموس هو عبارة عن هيكل بيانات غير مرتب يتم من خلاله تخزين البيانات على شكل أزواج من المفاتيح والقيم. يتكون القاموس من “مفتاح” (Key) و”قيمة” (Value) حيث يُستخدم المفتاح للوصول إلى القيمة المرتبطة به. يتميز القاموس بمرونته في التعامل مع أنواع البيانات المتنوعة سواء كانت نصوصًا، أرقامًا، قوائم، أو حتى قواميس أخرى.

المفتاح في القاموس يجب أن يكون كائنًا يمكن هاشه (مثل الأرقام، السلاسل النصية، أو التورث)، بينما يمكن أن تكون القيم في القاموس أي نوع من أنواع البيانات.

إنشاء القواميس في بايثون

يمكنك إنشاء قاموس في بايثون باستخدام الأقواس المعقوفة {} أو باستخدام دالة dict(). هناك عدة طرق لإنشاء قاموس بناءً على البيانات المتاحة لديك:

1. إنشاء قاموس باستخدام الأقواس المعقوفة:

python
# إنشاء قاموس بسيط my_dict = {'اسم': 'أحمد', 'عمر': 25, 'مدينة': 'القاهرة'} print(my_dict)

2. إنشاء قاموس باستخدام دالة dict():

python
# استخدام الدالة dict لإنشاء قاموس my_dict = dict(اسم='أحمد', عمر=25, مدينة='القاهرة') print(my_dict)

3. إنشاء قاموس باستخدام قائمة من الأزواج:

python
# إنشاء قاموس باستخدام قائمة من الأزواج my_dict = dict([('اسم', 'أحمد'), ('عمر', 25), ('مدينة', 'القاهرة')]) print(my_dict)

الوصول إلى القيم في القاموس

للحصول على القيم المرتبطة بمفاتيح معينة، يمكنك استخدام اسم القاموس متبوعًا بالمفتاح المطلوب بين الأقواس المعقوفة. في حال لم يكن المفتاح موجودًا، ستظهر رسالة خطأ.

python
# الوصول إلى قيمة باستخدام المفتاح print(my_dict['اسم']) # Output: أحمد

كما يمكنك استخدام دالة get() للحصول على القيمة المرتبطة بمفتاح معين، وهذه الطريقة أكثر أمانًا لأنها لا تُظهر خطأ في حال عدم وجود المفتاح:

python
# استخدام get للحصول على قيمة print(my_dict.get('مدينة')) # Output: القاهرة print(my_dict.get('عنوان')) # Output: None

إضافة وتعديل العناصر في القاموس

يمكنك إضافة أو تعديل العناصر في القاموس عن طريق استخدام المفتاح الجديد أو المفتاح الحالي. إذا كان المفتاح موجودًا، سيتم تعديل قيمته؛ وإذا لم يكن موجودًا، سيتم إضافة زوج جديد إلى القاموس.

python
# تعديل قيمة المفتاح 'عمر' my_dict['عمر'] = 30 # إضافة عنصر جديد my_dict['مهنة'] = 'مهندس' print(my_dict)

حذف العناصر من القاموس

هناك عدة طرق لحذف العناصر من القاموس:

  1. استخدام del لحذف عنصر بناءً على المفتاح:

python
# حذف عنصر باستخدام del del my_dict['مهنة'] print(my_dict)
  1. استخدام pop() لحذف عنصر وإرجاعه:

python
# حذف عنصر باستخدام pop() removed_value = my_dict.pop('مدينة') print(f"تم حذف مدينة: {removed_value}") print(my_dict)
  1. استخدام popitem() لحذف آخر عنصر مضاف إلى القاموس:

python
# حذف آخر عنصر مضاف last_item = my_dict.popitem() print(f"تم حذف العنصر: {last_item}") print(my_dict)
  1. استخدام clear() لمسح جميع العناصر:

python
# مسح جميع العناصر my_dict.clear() print(my_dict)

التكرار عبر القاموس

بايثون يوفر طرقًا متعددة للتكرار عبر القواميس، وذلك باستخدام الحلقات.

1. التكرار عبر المفاتيح:

python
# التكرار عبر المفاتيح for key in my_dict: print(key)

2. التكرار عبر القيم:

python
# التكرار عبر القيم for value in my_dict.values(): print(value)

3. التكرار عبر الأزواج (المفتاح والقيمة):

python
# التكرار عبر الأزواج for key, value in my_dict.items(): print(f"المفتاح: {key} - القيمة: {value}")

التعامل مع القاموس الفارغ

إذا كنت بحاجة إلى إنشاء قاموس فارغ، يمكنك ببساطة استخدام {} أو dict():

python
# قاموس فارغ empty_dict = {} # أو empty_dict = dict()

التحقق من وجود مفتاح في القاموس

يمكنك التحقق مما إذا كان المفتاح موجودًا في القاموس باستخدام عامل in:

python
# التحقق من وجود مفتاح if 'عمر' in my_dict: print("المفتاح موجود") else: print("المفتاح غير موجود")

دمج القواميس

يمكنك دمج قواميس متعددة في بايثون باستخدام عامل | في بايثون 3.9 وما بعدها، أو باستخدام طريقة update() في الإصدارات السابقة.

1. استخدام العامل | (من بايثون 3.9)

python
dict1 = {'اسم': 'أحمد', 'عمر': 25} dict2 = {'مدينة': 'القاهرة', 'مهنة': 'مهندس'} merged_dict = dict1 | dict2 print(merged_dict)

2. استخدام update() (لكل الإصدارات)

python
dict1 = {'اسم': 'أحمد', 'عمر': 25} dict2 = {'مدينة': 'القاهرة', 'مهنة': 'مهندس'} dict1.update(dict2) print(dict1)

القواميس في بايثون 3.10 وما بعدها: التحسينات

منذ الإصدار 3.10، تم إضافة بعض التحسينات على القواميس، بما في ذلك القدرة على استخدام القواميس في الأنماط المعقدة باستخدام Pattern Matching. هذا يسمح بكتابة أكواد أكثر دقة وسهولة في التعامل مع القواميس في بعض الحالات الخاصة.

python
# مثال على استخدام Pattern Matching مع القاموس def match_dict(d): match d: case {"اسم": "أحمد", "عمر": age}: print(f"الشخص هو أحمد وعمره {age}") case _: print("مفتاح غير معروف")

استخدام القواميس مع أنواع البيانات الأخرى

القواميس في بايثون يمكن أن تحتوي على أنواع بيانات أخرى كقيم، مثل القوائم أو حتى القواميس الأخرى، ما يجعلها مرنة للغاية في تمثيل البيانات المتداخلة.

python
# استخدام القاموس مع قائمة my_dict = {'اسم': 'أحمد', 'أصدقاء': ['سامي', 'مروان', 'ليلى']} print(my_dict) # استخدام القاموس المتداخل nested_dict = {'شخص': {'اسم': 'أحمد', 'عمر': 25}, 'مدينة': 'القاهرة'} print(nested_dict)

الخلاصة

تعد القواميس من أكثر الهياكل البيانية المرنة في بايثون، حيث توفر لك إمكانية تخزين واسترجاع البيانات بشكل سريع وفعال. يمكنك استخدام القواميس لتمثيل البيانات المعقدة والمتداخلة، سواء كانت تحتوي على أعداد، نصوص، قوائم أو حتى قواميس أخرى. من خلال تعلم كيفية استخدام القواميس بشكل صحيح، تستطيع بناء تطبيقات أكثر تعقيدًا وتنظيمًا.