10.5 القواميس المتداخلة واستيعاب القواميس
أهداف التعلم
في نهاية هذا القسم، ينبغي أن تكون قادرًا على:
- شرح بنية القواميس المتداخلة.
- استخدام استيعاب القواميس لإنشاء كائن قاموس.
القواميس المتداخلة
كما وُصِف سابقًا، تُعد قواميس Python نوعًا من هياكل البيانات التي تسمح بتخزين البيانات في أزواج مفتاح-قيمة. القواميس المتداخلة هي قواميس تُخزَّن كقيم داخل قاموس آخر. مثال على ذلك: هيكل تنظيمي تكون فيه المفاتيح هي الأقسام المختلفة، والقيم قواميس تمثّل موظفي كل قسم. لتخزين معلومات الموظفين في قسم ما، يمكن استخدام قاموس تكون مفاتيحه معرّفات الموظفين وقيمه أسماءهم. توضح الجداول أدناه بنية هذه القواميس المتداخلة وكيفية الوصول إلى القيم المتداخلة.
مثال 10.4
تعريف القواميس المتداخلة والوصول إلى عناصرها
| تعريف القواميس المتداخلة |
|---|
company_org_chart = {
"Marketing": {
"ID234": "Jane Smith"
},
"Sales": {
"ID123": "Bob Johnson",
"ID122": "David Lee"
},
"Engineering": {
"ID303": "Radhika Potlapally",
"ID321": "Maryam Samimi"
}
}
|
| الوصول إلى عناصر القواميس المتداخلة |
|---|
print(company_org_chart["Sales"]["ID122"])
print(company_org_chart["Engineering"]["ID321"])
David Lee Maryam Samimi |
مفاهيم تطبيقية
بنية القواميس المتداخلة
استيعاب القواميس
استيعاب القواميس (Dictionary comprehension) أسلوبٌ موجز وفعّال لإنشاء قاموس في بايثون. بهذا الأسلوب، تُحوَّل عناصر كائن قابل للتكرار إلى أزواج مفتاح-قيمة. وتُشبه صياغتُه صياغةَ استيعاب القوائم (list comprehension)، غير أنه يستخدم الأقواس المتعرجة بدلاً من الأقواس المربعة لتمثيل القاموس.
فيما يلي صياغة عامة لاستيعاب القواميس:
صياغة استيعاب القواميس
{key_expression: value_expression for element in iterable}
مفاهيم تطبيقية
استيعاب القواميس
جرّب بنفسك
أسعار المنتجات
افترض أن لديك قاموسًا لأسعار المنتجات، تكون مفاتيحه أسماء المنتجات وقيمه أسعارها بالدولار. اكتب برنامج بايثون يستخدم استيعاب القواميس لإنشاء قاموس جديد له نفس مفاتيح القاموس الأصلي، ولكن القيم هي الأسعار باليورو. علمًا بأن سعر الصرف 1 دولار = 0.85 يورو.
جرّب بنفسك
إعادة هيكلة بيانات الشركة
افترض أن لديك قاموسًا يحتوي على معلومات حول الموظفين في شركة. يُعرَّف كل موظف برقم تعريف، وتتضمن معلوماته اسمه وقسمه وراتبه. تريد إنشاء قاموس متداخل يجمع الموظفين حسب القسم حتى تتمكن من رؤية أسماء ورواتب جميع الموظفين في كل قسم بسهولة. اكتب برنامج بايثون يأخذ قاموسًا مدخلاً، employees، ويُخرج قاموسًا متداخلاً، dept_employees، يجمع الموظفين حسب القسم.
Input:
employees = {
1001: {"name": "Alice", "department": "Engineering", "salary": 75000},
1002: {"name": "Bob", "department": "Sales", "salary": 50000},
1003: {"name": "Charlie", "department": "Engineering", "salary": 80000},
1004: {"name": "Dave", "department": "Marketing", "salary": 60000},
1005: {"name": "Eve", "department": "Sales", "salary": 55000}
}
Resulting dictionary:
{
"Engineering": {1001: {"name": "Alice", "salary": 75000}, 1003: {"name":
"Charlie", "salary": 80000}},
"Sales": {1002: {"name": "Bob", "salary": 50000}, 1005: {"name": "Eve",
"salary": 55000}},
"Marketing": {1004: {"name": "Dave", "salary": 60000}}
}