Python للذكاء الاصطناعي متوسط · Intermediate 12 دقيقة

القواميس والمجموعات

Dictionaries and Sets

تخزين البيانات بأزواج مفتاح وقيمة، والمجموعات للعناصر الفريدة.

تقدّمك في المسار0%

القواميس

model = {"name": "ResNet", "layers": 50, "pretrained": True}
model["layers"]            # 50
model["optimizer"] = "Adam"  # إضافة مفتاح
model.get("dropout", 0.0)  # قيمة افتراضية إن لم يوجد
"name" in model            # True
del model["pretrained"]

المرور على القاموس

for key, value in model.items():
    print(key, "→", value)

keys() وvalues() وitems() تعيد عروضاً (views) على محتوى القاموس.

العد باستخدام القاموس

words = "the cat and the dog".split()
counts = {}
for w in words:
    counts[w] = counts.get(w, 0) + 1
# {'the': 2, 'cat': 1, 'and': 1, 'dog': 1}

توفر المكتبة القياسية collections.Counter لأداء ذلك مباشرة.

قواميس مولَّدة

labels = ["cat", "dog", "bird"]
label_to_id = {lbl: i for i, lbl in enumerate(labels)}

هذا النمط شائع لتحويل أسماء الفئات إلى أرقام قبل تدريب نموذج.

المجموعات

a = {"python", "numpy", "pandas"}
b = {"pandas", "sklearn"}
a | b    # الاتحاد
a & b    # التقاطع {'pandas'}
a - b    # الفرق

البحث عن عنصر في مجموعة أسرع عادة من البحث في قائمة كبيرة، لأن المجموعة تعتمد على التجزئة (hashing).

متى تستخدم ماذا؟

الحاجةالبنية
تسلسل مرتب قابل للتعديلlist
قيم ثابتة مرتبةtuple
بحث بمفتاحdict
عناصر فريدة وعمليات مجموعاتset

مصطلحات الدرس

القابلية للتجزئة Hashability
امتلاك الكائن قيمة تجزئة ثابتة تسمح باستخدامه مفتاحاً في قاموس أو عنصراً في مجموعة.
القاموس Dictionary
بنية تربط مفاتيح فريدة بقيم وتتيح البحث بالمفتاح بزمن متوسط ثابت تقريباً.
المجموعة Set
بنية تحتوي عناصر فريدة دون ترتيب مضمون، وتدعم عمليات المجموعات الرياضية.

الملخص

القاموس dict يربط مفاتيح فريدة بقيم ويتيح الوصول السريع إليها، ويحافظ على ترتيب الإدراج منذ Python 3.7. المجموعة set تحتوي عناصر فريدة غير مرتبة وتدعم عمليات الاتحاد والتقاطع والفرق. يجب أن تكون المفاتيح وعناصر المجموعات قابلة للتجزئة (hashable).

أسئلة مراجعة

  1. كيف تقرأ قيمة مفتاح قد لا يكون موجوداً دون حدوث خطأ؟

    باستخدام d.get(key, default).

  2. كيف تحذف التكرارات من قائمة؟

    بتحويلها إلى set، مع ملاحظة أن الترتيب قد لا يُحفظ.

المصادر والمراجع

  1. Data Structures: Dictionaries — Python documentation
  2. Data Structures: Sets — Python documentation

إكمال الدرس