123- كورس لغة بايثون Python شرح هياكل البيانات في بايثون – Python Data Structures – Hash Tables

Python Data Structures – Hash Tables

Python Data Structures – Hash Tables

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

كيفية إنشاء واستخدام جداول التجزئة في Python

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

# إنشاء قاموس بسيط
phone_book = {
    "Alice": "123-456-7890",
    "Bob": "987-654-3210",
    "Charlie": "555-555-5555"
}

# الوصول إلى قيمة باستخدام مفتاح
print(phone_book["Alice"])  # Output: 123-456-7890

# إضافة عنصر جديد
phone_book["David"] = "111-222-3333"

# تحديث قيمة موجودة
phone_book["Alice"] = "000-111-2222"

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

التعامل مع التصادمات في جداول التجزئة

من الممكن أن يحدث تصادم في جداول التجزئة عندما تنتج دالة التجزئة نفس العنوان لمفتاحين مختلفين. للتعامل مع تلك التصادمات، تُستخدم تقنيات متنوعة مثل الربط المتسلسل (Chaining) أو فتح التجزئة (Open Addressing). في الربط المتسلسل، يتم تخزين العناصر التي لها نفس عنوان التجزئة في قائمة مرتبطة. أما في فتح التجزئة، فيتم البحث عن موقع جديد في الذاكرة لتخزين القيمة المتصادمة. في Python، يتم التعامل مع التصادمات تلقائيًا داخل القواميس، مما يجعلها سهلة الاستخدام دون الحاجة إلى القلق بشأن إدارة التصادمات يدويًا.

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