الفرق بين list و dictionary
في list بتقول «هات item رقم 2». طيب لو مش فاكر رقمه؟
في dictionary بتقول «هات value "Abdelrahman"». بتوصل بالاسم مش بالرقم.
الشكل: أقواس مجعّدة {}، وكل زوج كده "key": value، والأزواج مفصولة بفاصلة.
90 3
قبل أي code — افهم بيحصل إيه
فكرة واحدة في كل خطوة
في list بتقول «هات item رقم 2». طيب لو مش فاكر رقمه؟
في dictionary بتقول «هات value "Abdelrahman"». بتوصل بالاسم مش بالرقم.
الشكل: أقواس مجعّدة {}، وكل زوج كده "key": value، والأزواج مفصولة بفاصلة.
90 3
نفس الصياغة بتعمل الاتنين:
لو key مش موجود → بيتضاف جديد
لو موجود → value بتاعته بتتغيّر
ما فيش function منفصلة للإضافة — السطر واحد.
{'Abdelrahman': 95, 'Mona': 78}
{'Abdelrahman': 95}لو طلبت key مش موجود، Python بتطلّع KeyError و program بيقع.
حلّين:
1. اتأكد الأول بـ in
2. استخدم .get(key, default) — بترجّع value افتراضية بدل error
False 0 90
for k in d بتدّيك keys..values() values · .keys() keys · .items() الاتنين مع بعض.
.items() هي الأكتر استخدامًا — بتدّيك key و value في نفس اللفّة.
Abdelrahman Mona --- Abdelrahman: 90 Mona: 78
عايز تعرف كل كلمة اتكررت كام مرة؟ ده الشغل اللي dictionary اتعمل عشانه.
النمط: لكل item، لو موجود زوّد 1، لو مش موجود ابدأ من 1.
و .get(x, 0) بتختصر ده في سطر واحد.
{'it': 3, 'cs': 1, 'math': 1}بعد ما تعد، بتلف على dictionary وتقارن عشان تلاقي الأعلى. نفس فكرة «أعلى درجة» بالظبط.
most: it (3 times)
value بتاعة key ممكن تكون أي حاجة — list، أو حتى dictionary تاني.
كده تقدر تمثّل بيانات حقيقية زي سجل طالب كامل.
Abdelrahman 90 84.33333333333333
أي حاجة ثابتة تنفع تبقى key: string، رقم، أو tuple.
و list ما تنفعش — لأنها بتتغيّر، و dictionary مش هيعرف يلاقي key تاني بعد ما يتغيّر.
وأشهر استخدام لـ key المركّب: إحداثيات، أو (اسم المادة، السنة).
90 two
dictionary بيحتفظ بترتيب الإضافة — مش بترتيب أبجدي ولا بترتيب values.
عايز تعرضه مرتّب؟ خد keys في list، رتّبها، وبعدين لف عليها.
ده بيخلّي تقريرك ثابت الشكل مهما كان ترتيب دخول البيانات.
Abdelrahman 90 Mona 78 Omar 65
value بتاعة key ممكن تكون dictionary كامل. وكده بتمثّل سجل مركّب زي اللي بيطلع من أي نظام.
الوصول بيبقى على مرحلتين: students["Abdelrahman"]["dept"].
اقراها: هات سجل Abdelrahman، وبعدين من السجل ده هات القسم.
IT Abdelrahman: IT ← 90 Mona: CS ← 78
الفكرة دي أسهل ما تتشاف من ما تتقرا
شوف إزاي بنفكّر قبل ما نكتب
نفكّر إزاي؟
نفكّر إزاي؟
.get(w, 0) بتحل ده في سطرنفكّر إزاي؟
.items() عشان أجيب key و valueنفكّر إزاي؟
KeyErrorin.get(key, default)نفكّر إزاي؟
d["grades"][0]نفكّر إزاي؟
.items() بتدّي key و value في نفس اللفّة:<8 و :>3 جوّه f-stringارجعلها وإنت بتحل — مش محتاج تحفظها
شوفه بيشتغل سطر سطر
شوفها هنا بدل ما تضيّع ساعة فيها
فكّر الأول — بعدين اكشف
إيه الناتج؟
إيه الناتج؟
إيه الناتج؟
إيه حجم dictionary؟
إيه اللي هيتطبع؟
ليه ده بيطلّع KeyError؟
إيه الناتج؟
إمتى تستخدم dictionary بدل list؟
اكتب code — ده الجزء اللي بيعلّم فعلاً
عندك list حروف. اعمل dictionary يقول كل حرف اتكرر كام مرة، واطبعه.
عندك list أقسام الطلبة. اطبع كل قسم وعدد طلبته.
عندك dictionary أسعار. زوّد كل الأسعار 10% واطبع dictionary بعد التعديل.
عندك dictionary درجات. اطبع أسماء الناجحين (60 فأكتر) مرتّبين، وعدد الراسبين.
كل إجابة معاها السبب
إيه حجم dictionary في الآخر؟
إيه الناتج؟
in على dictionary بتفحص إيه؟
إيه اللي هيتطبع؟
إيه اللي هيحصل؟
إيه أحسن طريقة تعد تكرارات؟
إمتى تستخدم dictionary بدل list؟