البيانات المركبة
الدلالة على الأنواع المركبة
المقصود بالتركيب أن تكون العناصر التي تحويها الحاوية هي نفسها حاويات لغيرها. مثلاً:
- نكتب:
list[dict]للدلالة على سلسلة من القواميس. - نكتب:
dict[dict[str, list]]للدلالة على قاموس من القواميس حيث المفتاح نص، والقيمة قائمة.
ومعظم البيانات في الواقع هي بيانات مركَّبة.
المثال الأول: تعليقات المستخدمين
يمكن تمثيل تعليقات مقطع بقائمة من القواميس، أي list[dict]. كل قاموس يمثل تعليقًا.
تجمع comments التعليقات في قائمة؛ كل عنصر فيها قاموس يحفظ الحقول التي تخص تعليقًا واحدًا.
المثال الثاني: حجوزات فندقية
يمكن حفظ حجوزات الفندق في list[dict] أيضًا. كل قاموس يمثل حجزًا، ويجمع اسم النزيل ورقم الغرفة وتاريخي الوصول والمغادرة.
تجمع bookings الحجوزات في قائمة، ويحفظ كل قاموس الحقول التي تخص حجزًا واحدًا.
المثال الثالث: أوراق إكسل
رغم أن إكسل يبدوا كمصفوفة متراصَّة فيها الخلايا تقاطعات لأعمدة وصفوف محددة؛ إلا أننا يمكن أن نمثلها بمجموعة من القواميس بتسمية العمود أولاً ثم تسمية الصف على هذا النحو:
- اسم الملف «درجات المشاريع.xlsx»
- فيه ورقتان: «المشاريع» و«الحضور»
- الأسماء في العمود
A - الدرجة الصرفة في العمود
B - الدرجة من مئة في العمود
C(وقد تتم بمعادلة تعتمد على العمود السابق)
- الأسماء في العمود
- فيه ورقتان: «المشاريع» و«الحضور»
المثال الرابع: الأعداد في الشبكات العصبية
الشبكات العصبيَّة أساس الذكاء الاصطناعي القائم على التعلم العميق. وهي مكوَّنة في أساسها الحسابي من مصفوفات ذات أرقام عشريَّة float في ذاكرة الحاسب. وتأتي في أشكال رياضيَّة معيَّنة:
- المتجَّه (Vector): 1D
- المصفوفة (Matrix): 2D
- التنسور (Tensor): ND
يمكن توضيح هذه الأشكال بقوائم بايثون المتداخلة:
في هذا التبسيط: tensor نوعه: list[list[list[float]]].