فهرست مطالب
وقتی در پایتون اطلاعاتی مانند مشخصات یک کاربر یا قیمت کالاها را ذخیره میکنید، استفاده از لیست دشوار میشود. در لیست باید بهخاطر بسپارید که نام کاربر در اندیس صفر است یا سن او در اندیس یک. اگر ترتیب دادهها تغییر کند، برنامه با خطا روبهرو میشود. دیکشنری دقیقاً برای حل همین مسئله طراحی شده است تا دادهها را بهجای شماره اندیس، با نام و کلید معنادار مدیریت کنید.
دیکشنری در زبان پایتون چیست
طبق مستندات رسمی پایتون، دیکشنری یک نوع داده نگاشتی (Mapping Type) است. برخلاف دنبالههایی مثل لیست و تاپل که با شاخصهای عددی مرتب میشوند، دیکشنری دادهها را بهصورت جفتهای «کلید و مقدار» (Key-Value Pairs) ذخیره میکند.
کلیدها در دیکشنری ویژگیهای مشخصی دارند:
- کلید باید تغییرناپذیر (Immutable) باشد؛ رشتهها، اعداد و تاپلها میتوانند کلید باشند، اما لیست هرگز نمیتواند کلید دیکشنری باشد.
- کلیدها در هر دیکشنری یکتا هستند؛ اگر یک کلید تکراری تعریف کنید، مقدار جدید جایگزین مقدار قبلی میشود.
- مقدار متناظر با هر کلید میتواند از هر نوع دادهای باشد، حتی یک لیست یا یک دیکشنری دیگر.
دیکشنریها با علامت آکولاد {} تعریف میشوند و میان کلید و مقدار، دونقطه قرار میگیرد.
نمونه کد کاربردی و خروجی واقعی
برای تعریف اطلاعات یک محصول در فروشگاه اینترنتی، دیکشنری مناسبترین ساختار است. در قطعه کد زیر، نحوه ساخت، خواندن و تغییر اطلاعات یک کالا را مشاهده میکنید:
python# تعریف دیکشنری مشخصات لپتاپ
product = {
"name": "ThinkPad T14",
"brand": "Lenovo",
"price": ۱۲۰۰,
"in_stock": True
}
# خواندن مقدار با استفاده از کلید
print("نام محصول:", product["name"])
# بهروزرسانی قیمت و افزودن ویژگی جدید
product["price"] = ۱۱۵۰
product["warranty_months"] = ۲۴
# چاپ تمام کلیدها و مقادیر
for key, value in product.items():
print(f"{key}: {value}")
خروجی اجرای این برنامه در ترمینال به شکل زیر خواهد بود:
textنام محصول: ThinkPad T14
name: ThinkPad T14
brand: Lenovo
price: ۱۱۵۰
in_stock: True
warranty_months: ۲۴
همانطور که در خروجی مشخص است، مقدار جدید قیمت جایگزین شد و کلید گارانتی نیز بهراحتی به ساختار اضافه شد.
اشتباهات رایج هنگام کار با دیکشنری
چند اشتباه پرتکرار در کار با دیکشنریها رخ میدهد که شناخت آنها از بروز باگ در پروژهها جلوگیری میکند.
مواجهه با خطای KeyError
اگر سعی کنید مقداری را با کلیدی بخوانید که در دیکشنری وجود ندارد، پایتون خطای KeyError بازمیگرداند:
pythonuser = {"username": "sara", "role": "admin"}
# این خط خطا ایجاد میکند
# print(user["email"])
برای جلوگیری از توقف برنامه، از متد .get() استفاده کنید. این متد اگر کلید وجود نداشته باشد، بهجای پرتاب خطا مقدار None یا مقدار پیشفرضی که تعیین کردهاید را برمیگرداند:
python# روش ایمن برای خواندن مقدار
email = user.get("email", "ثبت نشده")
print(email) # خروجی: ثبت نشده
استفاده از انواع تغییرپذیر به عنوان کلید
کلیدها باید قابلیت هششدن (Hashable) داشته باشند. بنابراین قرار دادن لیست به عنوان کلید، خطای TypeError: unhashable type: 'list' ایجاد میکند. اگر به یک جفت داده ثابت به عنوان کلید نیاز دارید، از تاپل استفاده کنید.
تغییر دیکشنری حین پیمایش حلقه
حذف یا اضافه کردن کلید به دیکشنری درست زمانی که در یک حلقه for روی آن گردش میکنید، خطای زمان اجرا میدهد. برای حذف یا تغییر ساختاری، بهتر است روی نسخهای از کلیدها حلقه بزنید یا از ساختارهای ساخت دیکشنری (Dict Comprehension) کمک بگیرید.
دیکشنری چه زمانی بهترین انتخاب است
استفاده از دیکشنری در سناریوهای زیر بهترین راهکار ساختار داده به شمار میآید:
۱. شمارش فراوانی دادهها: وقتی میخواهید تعداد تکرار کلمات در یک متن یا رخدادهای یک سامانه را بشمارید، استفاده از کلمه به عنوان کلید و تعداد به عنوان مقدار، سریعترین راه است.
۲. کار با دادههای وب و JSON: قالب داده JSON که در تبادل اطلاعات وب و APIها استاندارد است، ساختاری کاملاً منطبق بر دیکشنری پایتون دارد.
۳. تنظیمات برنامه: ذخیره کردن کلیدهای پیکربندی برنامه مانند نام سرور، پورت اتصال و حالت اشکالزدایی با نامهای روشن، خوانایی کد را چند برابر میکند.
۴. جدولهای جستوجو (Lookup Tables): زمان جستوجوی یک کلید در دیکشنری پایتون بر پایه جدول درهمسازی (Hash Table) پیاده شده و میانگین پیچیدگی زمانی آن $O(۱)$ است؛ یعنی حتی در میان صدها هزار داده، یافتن مقدار بر اساس کلید بلافاصله انجام میشود.
قدم بعدی برای یادگیری
تسلط بر ساختارهای داده توکار، پایه نوشتن برنامههای تمیز و پرسرعت است. برای بررسی دقیقتر انواع مجموعهها، توابع پیشرفته و ساخت برنامههای کامل، میتوانید مسیر خود را در دوره پایتون از صفر تا برنامهنویس ادامه دهید و منطق کار با دادهها را بهشکل پروژهمحور تمرین کنید.




نظرها
اولین نفری باشید که نظر میدهدسؤالتان را بپرسید یا تجربهتان را بنویسید تا نویسندهی مطلب پاسخ بدهد.