الدرس 5 من 10

التجميع بـ defaultdict

هدف الدرس

أقسام بلا KeyError

01

الشرح

التجميع يحوّل قائمة مسطّحة إلى أقسام: الطلاب بحسب المدينة، والطلبات بحسب العميل. والقاموس العادي يتعثّر عند أول عنصر من كل قسم: groups[city].append(name) ترمي KeyError لأن قائمة المدينة لم تُنشأ بعد.

defaultdict(list) من collections يحلّ هذا: إن طلبت مفتاحًا غائبًا أنشأ له قائمة فارغة وأعطاك إيّاها، فيصير التجميع سطرًا واحدًا داخل الحلقة. وما تمرّره إليه دالة تصنع القيمة الأولى لا القيمة نفسها: list لا [].

والفخّ: مجرّد قراءة مفتاح غائب تُنشئه. فـ if groups["أبها"]: تضيف «أبها» بقائمة فارغة وأنت تسأل فقط. للسؤال عن الوجود استعمل in أو .get().

02

المطلوب

جمّع students في by_city بـ defaultdict(list): مفتاحه المدينة وقيمته أسماء طلابها بترتيبهم الأصلي. ثم اطبع كل مدينة وأسماءها في سطر.

معايير التصحيح

5 معايير
  1. الرياض: ثلاثة أسماء بترتيبها الأصلي
  2. جدة والدمام بأسمائهما
  3. ثلاث مدن بلا قسم زائد
  4. by_city من نوع defaultdict(list)
  5. طُبعت كل مدينة مع أسمائها في سطر
main.py
المخرجاتPython · Pyodide

جارٍ تحميل بيئة بايثون… تُحمَّل مرّة واحدة ثم يحفظها المتصفح.

–/5

يبدأ الفحص حين تجهز البيئة.

5 معايير في بطاقة «المطلوب».