سطح مقدماتی (Beginner Level)
پایتون مجموعهای از ساختارهای داده داخلی (Built-in) مانند لیست، دیکشنری و تاپل را ارائه میدهد. اما زمانی که نیاز به کارایی بیشتر و کدهای خواناتر داریم، ماژول استاندارد collections به کمک ما میآید. این ماژول جایگزینهای تخصصیتری برای کانتینرهای استاندارد ارائه میدهد.
در این بخش با دو ابزار پرکاربرد Counter و namedtuple آشنا میشویم.

شمارش دادهها با Counter
کلاس Counter زیرمجموعهای از دیکشنری است که برای شمارش اشیاء هشپذیر (Hashable) استفاده میشود. اگر بخواهید تعداد تکرار هر آیتم در یک لیست یا تعداد کاراکترها در یک رشته را بشمارید، این بهترین ابزار است.
مثال ۱: شمارش کاراکترها و آیتمها
در این مثال میبینیم چگونه بدون نوشتن حلقههای تکراری، تعداد عناصر را محاسبه کنیم.
مثال ۲: پیدا کردن پرتکرارترین آیتمها
متد most_common() یکی از ویژگیهای بسیار کاربردی Counter است.
دادههای ساختاریافته با namedtuple
تاپلهای معمولی (Tuples) برای دسترسی به دادهها از ایندکس عددی استفاده میکنند (مثلاً point[0]). این کار خوانایی کد را کاهش میدهد. namedtuple به شما اجازه میدهد به آیتمهای تاپل با نام دسترسی داشته باشید، دقیقاً مانند یک کلاس اما با مصرف حافظه کمتر.
مثال ۳: تعریف و استفاده از namedtuple
# Static Example: ساختار برای دادههای کاربر
# این کد نشاندهنده نحوه تعریف است و در اینجا اجرا نمیشود
from collections import namedtuple
User = namedtuple('User', ['id', 'username', 'email'])
# User(id=1, username='admin', email='admin@example.com')
سطح پیشرفته (Professional Level)
در سطح حرفهای، ماژول collections ابزارهایی برای مدیریت کارآمدتر حافظه، سرعت بالاتر در عملیات صف (Queue) و مدیریت مقادیر پیشفرض در دیکشنریها ارائه میدهد.
مدیریت کلیدهای ناموجود با defaultdict
در دیکشنریهای معمولی، اگر به کلیدی دسترسی پیدا کنید که وجود ندارد، خطای KeyError دریافت میکنید. defaultdict این مشکل را حل میکند و اگر کلید وجود نداشته باشد، به صورت خودکار یک مقدار پیشفرض برای آن میسازد.
مثال ۴: گروهبندی دادهها
فرض کنید لیستی از تاپلها داریم و میخواهیم آنها را گروهبندی کنیم. بدون defaultdict باید مدام چک کنیم که آیا کلید وجود دارد یا خیر.
مثال ۵: شمارش سریع با int
استفاده از int به عنوان کارخانه (Factory) پیشفرض، مقدار ۰ را برای کلیدهای جدید برمیگرداند.
صفهای دوطرفه با deque
لیستهای پایتون برای اضافه کردن یا حذف کردن از انتهای لیست سریع هستند، اما اگر بخواهید از ابتدای لیست آیتمی را حذف کنید (pop(0))، پایتون مجبور است تمام عناصر دیگر را جابجا کند که کند است (O(n)).
کلاس deque (Double Ended Queue) برای اضافه و حذف سریع از هر دو طرف (O(1)) طراحی شده است.
مثال ۶: عملکرد صف و پشته (Queue & Stack)
نکات فنی و بهینهسازی (ChainMap)
گاهی اوقات نیاز دارید چندین دیکشنری را به عنوان یک واحد مدیریت کنید (مثلاً تنظیمات پیشفرض، تنظیمات فایل کانفیگ و تنظیمات خط فرمان). به جای کپی کردن و ادغام دیکشنریها (که حافظه مصرف میکند)، از ChainMap استفاده کنید.