الفصل : 6
الجزء : 2
العنوان : القواميس (DICTIONARIES)
القيام بتكرار من خلال القاموس
يمكن أن يحتوي قاموس Python واحد على بضعة أزواج من المفاتيح والقيم أو ملايين من الأزواج. نظرًا لأن القاموس يمكن أن يحتوي على كميات كبيرة من البيانات، يتيح لك Python التكرار عبر القاموس. يمكن استخدام القواميس لتخزين المعلومات بطرق متنوعة؛ لذلك، هناك عدة طرق مختلفة للتكرار عبرها. يمكنك التكرار عبر جميع أزواج المفتاح-القيمة، عبر المفاتيح، أو عبر القيم.
التكرار عبر جميع أزواج المفتاح-القيمة
قبل أن نستعرض الأساليب المختلفة للتكرار، دعنا ننظر في قاموس جديد مصمم لتخزين معلومات حول مستخدم على موقع ويب. القاموس التالي يخزن اسم المستخدم، الاسم الأول، والاسم الأخير لشخص واحد:
يمكنك الوصول إلى أي جزء منفرد من المعلومات حول `user_0` بناءً على ما تعلمته بالفعل في هذا الفصل. ولكن ماذا إذا كنت تريد رؤية كل ما هو مخزن في القاموس لهذا المستخدم؟ للقيام بذلك، يمكنك التكرار عبر القاموس باستخدام حلقة `for`:
لكتابة حلقة `for` للقاموس، تقوم بإنشاء أسماء للمتغيرين اللذين سيحتويان على المفتاح والقيمة في كل زوج مفتاح-قيمة. يمكنك اختيار أي أسماء تريدها لهذين المتغيرين. هذا الكود سيعمل بشكل جيد إذا استخدمت اختصارات لأسماء المتغيرات، مثل هذا:
النصف الثاني من عبارة `for` يشمل اسم القاموس متبوعًا بالmethod اسمها `items()`، التي ترجع تسلسلًا من أزواج المفتاح-قيمة. تقوم حلقة `for` بعد ذلك بتعيين كل من هذه الأزواج للمتغيرين المقدمين. في المثال السابق، نستخدم المتغيرات لطباعة كل مفتاح، متبوعًا بالقيمة المرتبطة به. يضمن `"\n"` في أول استدعاء لـ`print()` أن يتم إدراج سطر فارغ قبل كل زوج مفتاح-قيمة في الناتج:
يعمل التكرار عبر جميع أزواج المفتاح-القيمة بشكل جيد بشكل خاص مع القواميس مثل مثال `favorite_languages.py` الذي يخزن نفس النوع من المعلومات للعديد من المفاتيح المختلفة. إذا قمت بالتكرار عبر القاموس `favorite_languages`، فستحصل على اسم كل شخص في القاموس ولغته البرمجية المفضلة. نظرًا لأن المفاتيح تشير دائمًا إلى اسم الشخص والقيمة دائمًا لغة، سنستخدم المتغيرين `name` و`language` في الحلقة بدلاً من `key` و`value`. هذا سيجعل من السهل متابعة ما يحدث داخل الحلقة:
هذا الكود يخبر Python بالتكرار عبر كل زوج مفتاح-قيمة في القاموس. عند معالجة كل زوج، يتم تعيين المفتاح للمتغير `name`، والقيمة للمتغير `language`. تجعل هذه الأسماء الوصفية من السهل فهم ما تقوم به استدعاء `print()`.
الآن، في بضعة أسطر من الكود، يمكننا عرض جميع المعلومات من الاستطلاع:
التكرار عبر جميع المفاتيح في القاموس
تعتبر الطريقة `keys()` مفيدة عندما لا تحتاج للعمل مع جميع القيم في القاموس. دعونا للتكرار عبر القاموس `favorite_languages` ونطبع أسماء كل من شارك في الاستطلاع:
تخبر هذه الحلقة Python بسحب جميع المفاتيح من القاموس `favorite_languages` وتعيينها واحدًا تلو الآخر إلى المتغير `name`. يظهر الناتج أسماء كل من شارك في الاستطلاع:
التكرار عبر المفاتيح هو في الواقع السلوك الافتراضي عند التكرار عبر قاموس، لذلك سيكون لهذا الكود نفس الناتج إذا كتبت:
ب دلاً من:
يمكنك اختيار استخدام الطريقة `keys()` بشكل صريح إذا جعلت كودك أسهل في القراءة، أو يمكنك تجاهلها إذا رغبت في ذلك.
يمكنك الوصول إلى القيمة المرتبطة بأي مفتاح تهتم به داخل الحلقة، باستخدام المفتاح الحالي. دعونا نطبع رسالة إلى بعض الأصدقاء حول اللغات التي اختاروها. سنكرر عبر الأسماء في القاموس كما فعلنا سابقًا، ولكن عندما يتطابق الاسم مع أحد أصدقائنا، سنعرض رسالة حول لغتهم المفضلة:
أولاً، نقوم بإنشاء قائمة بالأصدقاء الذين نريد طباعة رسالة لهم. داخل الحلقة، نطبع اسم كل شخص. ثم نتحقق مما إذا كان الاسم الذي نعمل معه موجودًا في قائمة الأصدقاء. إذا كان كذلك، نحدد اللغة المفضلة للشخص باستخدام اسم القاموس والقيمة الحالية لـ`name` كمفتاح. ثم نطبع تحية خاصة، تتضمن إشارة إلى لغتهم المفضلة.
يتم طباعة أسماء الجميع، ولكن أصدقاؤنا يتلقون رسالة خاصة:
التكرار عبر مفاتيح القاموس بترتيب معين
يتم التكرار عبر قاموس وترجيع العناصر بنفس الترتيب الذي تم إدخالها فيه. في بعض الأحيان، قد ترغب في التكرار عبر قاموس بترتيب مختلف. إحدى الطرق للقيام بذلك هي فرز المفاتيح عند إعادتها في حلقة `for`. يمكنك استخدام الدالة `sorted()` للحصول على نسخة من المفاتيح مرتبة:
عبارة `for` هذه مشابهة لعبارات `for` الأخرى، باستثناء أننا قمنا بتغليف الدالة `sorted()` حول الطريقة `dictionary.keys()`. هذا يخبر Python بجلب جميع المفاتيح في القاموس وترتيبها قبل بدء الحلقة. يظهر الناتج كل من شارك في الاستطلاع، مع عرض الأسماء بترتيب:
التكرار عبر جميع القيم في القاموس
إذا كنت مهتمًا بشكل أساسي بالقيم التي يحتوي عليها القاموس، يمكنك استخدام الطريقة `values()` لإرجاع تسلسل من القيم بدون أي مفاتيح. على سبيل المثال، لنقل إننا نريد ببساطة قائمة بجميع اللغات التي تم اختيارها في استطلاع لغات البرمجة لدينا، دون اسم الشخص الذي اختار كل لغة:
تسحب عبارة `for` هنا كل قيمة من القاموس وتعينها للمتغير `language`. عند طباعة هذه القيم، نحصل على قائمة بجميع اللغات المختارة:
`
هذا النهج يسحب جميع القيم من القاموس بدون التحقق من التكرارات. قد يكون هذا مناسبًا مع عدد صغير من القيم، ولكن في استطلاع مع عدد كبير من المستجيبين، سينتج قائمة متكررة جدًا. لرؤية كل لغة مختارة بدون تكرار، يمكننا استخدام مجموعة. المجموعة هي مجموعة يتعين أن يكون كل عنصر فيها فريدًا:
عند تغليف `set()` حول مجموعة من القيم التي تحتوي على عناصر مكررة، يحدد Python العناصر الفريدة في المجموعة ويبني مجموعة من تلك العناصر. هنا نستخدم `set()` لسحب اللغات الفريدة في `favorite_languages.values()`.
النتيجة هي قائمة غير مكررة من اللغات التي تم ذكرها من قبل الأشخاص الذين شاركوا في الاستطلاع:
كما تستمر في تعلم Python، ستجد في كثير من الأحيان ميزة مدمجة في اللغة تساعدك على القيام بما تريد فعله بالضبط مع بياناتك.
ملاحظة: يمكنك بناء مجموعة مباشرة باستخدام الأقواس والفصل بين العناصر بالفواصل:
من السهل أن تخطئ بين المجموعات والقواميس لأن كلاهما ملفوف بأقواس. عندما ترى أقواس بدون أزواج مفتاح-قيمة، فمن المحتمل أنك تنظر إلى مجموعة. على عكس القوائم والقواميس، لا تحتفظ المجموعات بالعناصر بترتيب محدد.
جربها بنفسك
تمرين 6-4. Glossary 2:
الآن بعد أن تعرفت على كيفية التكرار عبر القاموس، قم بتنظيف الكود من التمرين 6-3 في الجزء الاول عن طريق استبدال سلسلة استدعاءات `print()` الخاصة بك بحلقة تعمل عبر مفاتيح وقيم القاموس. عندما تتأكد من أن الحلقة تعمل بشكل صحيح، أضف خمس مصطلحات Python إضافية إلى قاموسك. عندما تقوم بتشغيل برنامجك مرة أخرى، ينبغي أن يتم تضمين هذه الكلمات والمعاني الجديدة تلقائيًا في الناتج.
تمرين 6-5. Rivers:
قم بعمل قاموس يحتوي على ثلاثة أنهار رئيسية والبلد الذي يجري فيه كل نهر. قد يكون أحد أزواج المفتاح-القيمة على النحو التالي: 'nile': 'egypt'.
استخدم حلقة لطباعة جملة حول كل نهر، مثل: The Nile runs through Egypt.
استخدم حلقة لطباعة اسم كل نهر مدرج في القاموس.
استخدم حلقة لطباعة اسم كل بلد مدرج في القاموس.
تمرين 6-6. Polling:
استخدم الكود في `favorite_languages.py اللي كان في الجزء الأول.
قم بعمل قائمة بأسماء الأشخاص الذين ينبغي أن يأخذوا استطلاع اللغات المفضلة. قم بتضمين بعض الأسماء التي هي بالفعل في القاموس وبعض الأسماء التي ليست كذلك.
كرر عبر قائمة الأشخاص الذين ينبغي أن يأخذوا الاستطلاع. إذا كانوا قد أخذوا الاستطلاع بالفعل، اطبع رسالة تشكرهم على استجابتهم. إذا لم يأخذوا الاستطلاع بعد، اطبع رسالة تدعوهم لأخذ الاستطلاع.
النهاية
نكون هنا انتهينا من الجزء 2 من الفصل 6 من منهج تعلم Python من كتاب python crash course بالعربية
واذا واجهتك اي مشكلة في الفهم او ما شابه , يمكنك على الفور الذهاب الى المجتمع الخاص بنا في Telegram للمناقشة والتواصل معنا من هنا
او اذا واجهتك مشكلة في الموقع او تريد اجابة سريعة يمكنك الذهاب الى اخر صفحة في الموقع ستجد صفحة اتصل بنا موجودة يمكنك ارسالة لنا مشكلتك , وسيتم الرد عليها بسرعة جدا ان شاء الله
ويمكنك الأنضمام الى المجتمع Hidden Lock بالكامل مع جميع قنواته للأستفادة في اخر الأخبار في عالم التقنية وايضا الكتب بالمجان والكورسات والمقالات من خلال الرابط التالي لمجموعة القنوات من هنا
يمكنك ايضا متابعتنا في منصات X او Twitter سابقا , لمشاهدة الاخبار والمقالات السريعة والمهمة من
وفقط كان معكم sparrow مقدم هذه الشهادة من فريق Hidden Lock