الوحدة collections‎ في بايثون

من موسوعة حسوب

تتضمّن هذه الوحدة أنواع بيانات متخصّصة بالحاويات container وتقدّم بدائل للحاويات الداخلية dict و list و set و tuple.

تقدّم هذه الوحدة الكائنات التالية:

namedtuple دالة مولِّدة factory function لإنشاء أصناف فرعية من صفٍّ يتضمن حقولًا مسمّاة
deque حاوية شبيهة بالقوائم تمتاز بأدائها السريع في إضافة العناصر وحذفها في كلا الطرفين.
ChainMap صنف شبيه بالقواميس يستخدم لإنشاء عرض منفرد لعمليات ربط mapping متعددة
Counter صنف فرعي من الصنف dict الهدف منه عدّ الكائنات القابلة للتقطيع hashable
OrderedDict صنف فرعي من الصنف dict يمكنه تذكّر ترتيب العناصر عند إضافتها
defaultdict صنف فرعي من الصنف dict يستدعي دالة مولّدة تقدّم القيم المفقودة
UserDict تغليف حول كائنات القواميس لتسهيل عملية تفريع أصناف القواميس
UserList تغليف حول كائنات القوائم لتسهيل عملية تفريع أصناف القوائم
UserString تغليف حول كائنات السلاسل النصية لتسهيل عملية تفريع أصناف السلاسل النصية

ملاحظة: نُقلت الأصناف المجردة الأساسية للمجموعات Collections Abstract Base Classes في الإصدار 3.3 من بايثون إلى الوحدة collections.abc. ولغرض التوافق مع الإصدارات السابقة من اللغة، ستبقى هذه الأصناف في وحدة collections حتى الإصدار 3.7، وستحذف منها بعد ذلك بصورة نهائية.

كائنات ChainMap

يقدّم الصنف Chainmap طريقة سريعة لربط عدد من عمليات الربط mappings ليصبح بالإمكان التعامل معها كوحدة واحدة. وعادة ما تكون هذه الطريقة أسرع من إنشاء قاموس جديد واستدعاء التابع update()‎ مرّات عدة.

يمكن استخدام هذا الصنف لمحاكاة النطاقات المتشعّبة وهو مفيد في عملية القولبة templating.

كائنات Counter

تقدم كائنات Counter (العدادات) أداة سريعة ومريحة لإجراء عمليات العدّ والحصول على المجموع.

كائنات deque

تعدّ deques تعميمًا للأكداس والطوابير stacks and queues (يقرأ الاسم هكذا "deck" وهو اختصار للعبارة "double-ended queue").

تدعم deques عمليات الإضافة والحذف من طرفي كائن deque مع ضمان سلامة الخيوط thread-safe ودون استهلاك كبير للذاكرة وبأداء مقارب لأداء O(1)‎ في كلا الاتجاهين.

كائنات defaultdict

صنف متفرّع من الصنف الداخلي dict يعيد تعريف override تابع واحد ويضيف متغير نسخة واحدًا قابلًا للكتابة.

الصفوف المسمّاة namedtuples

تعطي الصفوف المسمّاة مدلولًا لكل عنصر في الصف وتزيد من مقروئية وتوثيقية الشيفرة، ويمكن استخدام الصفوف المسمّاة في أي مكان تُستخدم فيه الصفوف العادية، ويمكن الوصول إلى الحقول فيها عن طريق الاسم عوضًا عن الموقع.

كائنات OrderedDict

القواميس المرتّبة مطابقة للقواميس العادية باستثناء أنّا تتذكر ترتيب العناصر لحظة إدراجها فيها، بمعنى أنّه عند إضافة العناصر إلى قاموس مرتب، تعاد العناصر حسب ترتيب مفاتيحها عند إضافتها أول مرّة.

كائنات UserDict

يعدّ UserDict صنفًا يغلّف كائنات القاموس في بايثون، ولكن الحاجة إلى هذا الصنف أصبحت محدودة نظرًا لإمكانية التفريع المباشر من الصنف dict، ولكن التعامل مع هذا الصنف أسهل بسبب كون إمكانية الوصول إلى القاموس الضمني كخاصية.

كائنات UserList

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

كائنات UserString

يعدّ UserString صنفًا يغلّف السلاسل النصية في بايثون، ولكن الحاجة إلى هذا الصنف أصبحت محدودة نظرًا لإمكانية التفريع المباشر من الصنف str، ولكن التعامل مع هذا الصنف أسهل بسبب إمكانية الوصول إلى السلسلة النصية الضمنية كخاصية.

انظر أيضًا

الوحدة collections.abc في بايثون.

مصادر