English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل بايثون الأساسي

تحكم بايثون في العملية

الوظائف في Python

نوع البيانات في Python

عمليات ملف بايثون

أbjects و classes في بايثون

تاريخ وتوقيت بايثون

معرفة بايثون متقدمة

دليل بايثون

فهم المعجم في Python

في هذا الدليل، سنتعلم كيفية استخدام فهم القواميس في بايثون وكيفية استخدامه في أمثلة.

القواميس هي نوع بيانات في بايثون تسمح لنا بتخزين البيانات فيفي مفتاح/قيمة زوج. على سبيل المثال:

my_dict = {1: 'apple', 2: 'ball'}

للحصول على معلومات إضافية حولها، يرجى زيارة:قواميس بايثون

ما هو فهم القواميس في بايثون؟

فهم القواميس هو طريقة رائعة وسهلة لإنشاء قواميس.

مثال 1: فهم القواميس

خذ هذا الكود:

square_dict = dict()
for num in range(1, 11):
    square_dict[num] = num*num
print(square_dict)

الآن، دعونا نستخدم دالة فهم القواميس لإنشاء قائمة في البرنامج السابق.

# مثال فهم القواميس
square_dict = {num: num*num for num in range(1, 11)}
print(square_dict)

سيكون خروج هذين البرنامجين متطابقًا.

{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100}

في هذين البرنامجين، قمنا بإنشاء square_dict يحتوي علىمفتاح/قيمة مربعةقواميسنا.

لكن استخدام فهم القواميس يمكن أن يجعلنافي سطر واحدإنشاءالقواميس.

استخدام فهم القواميس

من خلال النظر في الأمثلة السابقة، يمكننا رؤية أن فهم القواميس يجب أن يكون مكتوبًا وفقًا لم��ل معين.

أبسط جملة لفهم القواميس هي:

dictionary = {key: value for vars in iterable}

دعونا نقارن هذا الجدل مع مثال السابق من فهم القواميس.

الآن، دعونا نرى كيف يمكننا استخدام بيانات قائمة أخرى لاستخدام فهم القواميس.

مثال 3: كيفية استخدام فهم القواميس

#item price in dollars
old_price = {'milk': 1.02, 'coffee': 2.5, 'bread': 2.5}
dollar_to_pound = 0.76
new_price = {item: value*dollar_to_pound for (item, value) in old_price.items()}
print(new_price)

نتائج الإخراج

{'milk': 0.7752, 'coffee': 1.9, 'bread': 1.9}

في هذه الحالة، يمكننا رؤية أننا نبحث عن أسعار المنتجات بالدولار ونحولها إلى الجنيه الإسترليني. يجعل التفهم القائمة المرتبة هذه المهمة أسهل وأسرع.

الشروط في تفهم القائمة المرتبة

يمكننا تحسين تفهم القائمة المرتبة بإضافة شروط. دعونا نرى مثالاً.

مثال 4: تفهم القائمة المرتبة مع شرط if

original_dict = {'jack': 38, 'michael': 48, 'guido': 57, 'john': 33}
even_dict = {k: v for (k, v) in original_dict.items() if v % 2 == 0}
print(even_dict)

نتائج الإخراج

{'jack': 38, 'michael': 48}

يمكننا رؤية أن العناصر التي تحتوي على قيم زوجية فقط تم إضافتها بسبب جمل تفهم القائمة المرتبة.

مثال 5: تفهم القائمة المرتبة مع شرط if متعدد

original_dict = {'jack': 38, 'michael': 48, 'guido': 57, 'john': 33}
new_dict = {k: v for (k, v) in original_dict.items() if v % 2 != 0 if v < 40}
print(new_dict)

نتائج الإخراج

{'john': 33}

في هذه الحالة، تم إضافة العناصر التي لها قيم زوجية أقل من 40 إلى القائمة المرتبة الجديدة.

هذا لأن تفهم القائمة المرتبة يحتوي على جمل متعددة. إنها تساوي عملية "و" التي يجب أن تتمشى مع شروطين في نفس الوقت.

مثال 6: تفهم القائمة المرتبة مع شرط if-else

original_dict = {'jack': 38, 'michael': 48, 'guido': 57, 'john': 33}
new_dict_1 = {k: ('قديم' if v > 40 else 'شاب')
    for (k, v) in original_dict.items()
print(new_dict_1)

نتائج الإخراج

{'jack': 'شاب', 'michael': 'قديم', 'guido': 'قديم', 'john': 'شاب'}

في هذه الحالة، سيتم إنشاء قائمة مرتبة جديدة باستخدام التفهم الفرعي.

المنتجات التي قيمتها تساوي أو تزيد عن 40 قيمة "قديم"، والمنتجات الأخرى قيمة "شاب".

تفهم القائمة المرتبة

يمكننا فهم أن إضافة مفهوم التفهم إلى التفهم يمكن أن يخلق قائمة مرتبة من القواميس. دعونا نرى مثالاً.

مثال 7: دليل مدمج يحتوي على قواميس فهمتان

dictionary = {
    k1: {k2: k1 * k2 for k2 in range(1, 6)} for k1 in range(2, 5)
}
print(dictionary)

نتائج الإخراج

{2: {1: 2, 2: 4, 3: 6, 4: 8, 5: 10}, 
3: {1: 3, 2: 6, 3: 9, 4: 12, 5: 15},
4: {1: 4, 2: 8, 3: 12, 4: 16, 5: 20}}

كما ترون، قمنا ببناء جدول ضرب في النطاق من 2 إلى 4.

عند استخدام فهم القواميس المدمجة، يبدأ Python دائمًا بالدورات الخارجية قبل الدخول إلى الدورات الداخلية.

لذلك، الكود المذكور أعلاه يعادل:

dictionary = dict()
for k1 in range(11, 16):
    dictionary[k1] = {k2: k1*k2 for k2 in range(1, 6)}
print(dictionary)

يمكن توسيعه بشكل أكبر:

dictionary = dict()
for k1 in range(11, 16):
    dictionary[k1] = dict()
    for k2 in range(1, 6):
        dictionary[k1][k2] = k1*k2
print(dictionary)

كل هذه البرامج تنتج نفس الناتج.

فوائد استخدام فهم القواميس

كما رأينا، يقلل فهم القواميس بشكل كبير من عملية إعداد القواميس. يجعل الكود أكثر نمطًا بريتوني.

يمكننا استخدام فهم القواميس في كودنا لتقليل عدد أسطر الكود بينما الحفاظ على شمولية المنطق.

ملاحظات حول استخدام فهم القواميس

على الرغم من أن فهم القواميس يمكن أن يكون مفيدًا جدًا في كتابة كود سهل القراءة وجميل، إلا أنه ليس دائمًا الخيار الصحيح.

استخدمهم كالتالي:

  • في بعض الأحيان يمكن أن يجعل الكود يعمل ببطء ويأخذ مساحة أكبر من الذاكرة.

  • هذا سيزيد من قابلية القراءة للكود.

لا يمكننا أن نحاول فقط جعل الكود في سطر واحد بإضافة لغة معقدة أو كميات كبيرة من فهم القواميس. في هذه الحالات، من الأفضل اختيار طرق بديلة، مثل الدورات.