الدرس 9 من 10
القواميس والمفاتيح
- 13 دقيقة
- 5 فحوص
- 3 تلميحات
- إلى المطلوب
هدف الدرس
ابحث بالمفتاح لا بالموضع
الشرح
القاموس يربط كل مفتاح بقيمة، مثل stock = {"قلم": 12, "دفتر": 5}، فتصل إلى القيمة بمفتاحها لا بموضعها، فتكتب stock["قلم"]، وتضيف قيمة جديدة أو تغيّر قيمة موجودة بالطريقة نفسها: stock["مسطرة"] = 7. وهذا أسرع وأوضح من أن تبحث في قائمة كلما أردت قيمة.
أما update فتدمج قاموسًا في قاموس آخر دفعة واحدة، فتستبدل قيمة المفتاح الموجود وتضيف المفتاح الجديد. وitems() تعطيك المفتاح والقيمة معًا داخل الحلقة: for item, qty in stock.items():.
وانتبه إلى أن طلب مفتاح غير موجود مثل stock["حقيبة"] يسبّب الخطأ KeyError ويوقف البرنامج، فإذا كان المفتاح قد لا يوجد فاسأل عنه أوّلًا بـ "حقيبة" in stock، أو اطلبه بـ stock.get("حقيبة", 0) التي تُرجع القيمة إن وُجدت وتُرجع القيمة الافتراضية إن لم توجد، دون أن تضيف شيئًا إلى القاموس.
المطلوب
وصل جرد جديد، فحدّث stock بـ update لتصير كمية الدفتر 20 وتُضاف المسطرة بكمية 7. ثم ضع في bags كمية «حقيبة» باستعمال get والقيمة الافتراضية 0، وضع في available قائمة بأسماء الأصناف التي كميتها أكبر من صفر، بترتيبها في القاموس.
الفحوص
5 فحوص- الدفتر صار 20 والمسطرة أُضيفت بكمية 7
- القلم والممحاة كما كانا
- المتغيّر bags يساوي صفرًا لصنف غير موجود
- السؤال عن «حقيبة» لم يُضفها إلى stock
- القائمة available فيها المتوفّر فقط بترتيبه