الدرس 39 من 56 · احترف بايثون

القواميس المتقدمة والمجموعات sets

عندك من قبل القاموس: مفتاح وقيمة، مثل دفتر ترجمة (كلمة ← معناها). اليوم حيل احترافية عليه:

player = {"name": "فليكس", "level": 7, "coins": 320}

print(list(player.keys()))      # كل المفاتيح
print(list(player.values()))    # كل القيم
print("coins" in player)        # هل المفتاح موجود؟

for key, value in player.items():
    print(key, "=", value)

player.pop("coins")             # حذف مفتاح
print(player.get("level", 0))   # قيمة أو صفر لو غايب

items() تعطيك المفتاح والقيمة مع بعض — مثالية للمرور على كل شي. وget هي النسخة المؤدبة من [ ]: ما تنهار لو المفتاح غايب، تعطي بديلاً.

والآن نجمة الدرس: المجموعة set — كيس ما يقبل التكرار أبداً:

nums = [1, 2, 2, 3, 3, 3]
unique = set(nums)
print(unique)   # {1, 2, 3} — التكرار انمسح!

سوّيتها بهمسة: أقوى استخداماتها المقارنة بين مجموعتين — مثل ما تقارن صندوق ألعابك بصندوق صديقك:

my_games = {"ماينكرافت", "فورتنايت", "روبلوكس"}
friend_games = {"روبلوكس", "بيفيست"}

print(my_games & friend_games)   # المشترك: روبلوكس
print(my_games | friend_games)   # الكل مدموجاً
print(my_games - friend_games)   # اللي عندي بس

& تعني "المشترك بيننا"، و| "كل شي من الطرفين"، و- "عندي وأنت ما عندك". نظيف؟

جرب بنفسك: سوي قائمة مشتريات فيها تكرارات، نظفها بـ set، وبعدين احسب كم صنف فريد عندك بـ len.

اختبار سريع للدرس

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

1. وش يسوي set([3, 1, 3, 2, 1])؟
2. وش معنى & بين مجموعتين؟
3. ليش نفضل dict.get على الأقواس [ ]؟
الدرس 38 الدرس 40 — بايثون تتكلم مع العالم: طلب ويب و API
FeLiXFeLiX AI — مساعد المنصتين