آموزش کار با دیکشنری‌ها (Dictionaries) در پایتون

1

آموزش کار با دیکشنری‌ها (Dictionaries) در پایتون

در دنیای برنامه‌نویسی پایتون، زمانی که با حجم زیادی از داده‌های مرتبط سروکار داریم، ساختمان‌های داده ساده مانند لیست‌ها یا تاپل‌ها همیشه پاسخگو نیستند. اگر بخواهید اطلاعات یک کاربر (مانند نام، سن، ایمیل و سطح دسترسی) را ذخیره کنید، استفاده از ایندکس‌های عددی در لیست بسیار گیج‌کننده خواهد بود. اینجاست که دیکشنری‌ها (Dictionaries) وارد میدان می‌شوند.

دیکشنری یکی از قدرتمندترین، منعطف‌ترین و پرکاربردترین ساختمان‌های داده در پایتون است. در این مقاله از بخش «ساختمان داده‌ها» در پای شو، به صورت جامع و با مثال‌های کاربردی، نحوه کار با دیکشنری‌ها را می‌آموزیم.

دیکشنری در پایتون چیست؟

دیکشنری در پایتون مجموعه‌ای از داده‌هاست که به صورت جفت‌های «کلید-مقدار» (Key-Value) ذخیره می‌شوند. برخلاف لیست‌ها که عناصر آن‌ها با استفاده از شماره ایندکس (۰، ۱، ۲ و…) فراخوانی می‌شوند، در دیکشنری‌ها هر مقدار (Value) به یک کلید (Key) اختصاصی متصل است.

  • کلیدها (Keys): باید یکتا (بدون تکرار) و از نوع داده‌های تغییرناپذیر (Immutable) مانند رشته (String)، عدد یا تاپل باشند.

  • مقادیر (Values): می‌توانند از هر نوع داده‌ای باشند (رشته، عدد، لیست و حتی یک دیکشنری دیگر) و تکرار آن‌ها بلامانع است.

نحوه ساخت دیکشنری

برای تعریف یک دیکشنری، از آکولاد {} استفاده می‌کنیم. کلید و مقدار با علامت دونقطه : از هم جدا می‌شوند و جفت‌های مختلف با کاما , از یکدیگر تفکیک می‌گردند.

Python

# ساخت یک دیکشنری برای ذخیره اطلاعات کاربر
user_info = {
    "first_name": "علی",
    "last_name": "رضایی",
    "age": 28,
    "is_active": True
}

print(user_info)

دسترسی به مقادیر دیکشنری

برای خواندن اطلاعات داخل دیکشنری دو روش اصلی وجود دارد:

۱. استفاده از براکت []

رایج‌ترین روش، قرار دادن نام کلید داخل براکت است.

Python

print(user_info["first_name"])  # خروجی: علی

نکته مهم: اگر از کلیدی استفاده کنید که در دیکشنری وجود نداشته باشد، پایتون خطای KeyError صادر کرده و برنامه متوقف می‌شود.

۲. استفاده از متد get()

این روش بسیار امن‌تر است. اگر کلید مورد نظر وجود نداشته باشد، به جای خطا، مقدار None (یا یک مقدار پیش‌فرض که شما تعیین می‌کنید) برگردانده می‌شود.

Python

print(user_info.get("email"))  # خروجی: None
print(user_info.get("email", "ایمیل ثبت نشده است"))  # خروجی: ایمیل ثبت نشده است

اضافه کردن و تغییر مقادیر

دیکشنری‌ها تغییرپذیر (Mutable) هستند. اگر کلیدی که فراخوانی می‌کنید از قبل وجود داشته باشد، مقدار آن ویرایش می‌شود و اگر وجود نداشته باشد، به عنوان یک عضو جدید به دیکشنری اضافه می‌گردد.

Python

# تغییر مقدار یک کلید موجود
user_info["age"] = 29

# اضافه کردن یک کلید و مقدار جدید
user_info["city"] = "تهران"

print(user_info)

حذف عناصر از دیکشنری

برای پاک کردن اطلاعات از دیکشنری، ابزارهای مختلفی در پایتون تعبیه شده است:

  • متد pop(): مقدار متناظر با کلید مشخص‌شده را حذف کرده و آن مقدار را برمی‌گرداند.

  • متد popitem(): آخرین جفت کلید-مقداری که به دیکشنری اضافه شده است را حذف می‌کند.

  • کلمه کلیدی del: می‌تواند یک کلید خاص یا کل دیکشنری را به طور کامل از حافظه پاک کند.

  • متد clear(): تمام اعضای دیکشنری را پاک می‌کند و یک دیکشنری خالی {} باقی می‌گذارد.

Python

# حذف با pop
removed_age = user_info.pop("age")

# حذف با del
del user_info["is_active"]

# پاکسازی کامل
user_info.clear()

پیمایش (Iterating) در دیکشنری‌ها

برای حرکت روی اعضای یک دیکشنری و خواندن آن‌ها، استفاده از حلقه for بهترین گزینه است. پایتون سه متد کاربردی برای این کار در اختیار شما قرار می‌دهد:

۱. پیمایش روی کلیدها (keys)

این حالت پیش‌فرض حلقه در دیکشنری‌هاست.

Python

for key in user_info.keys():
    print(key)

۲. پیمایش روی مقادیر (values)

اگر فقط به مقادیر (Values) نیاز دارید:

Python

for value in user_info.values():
    print(value)

۳. پیمایش روی کلیدها و مقادیر به صورت همزمان (items)

این متد کاربردی‌ترین روش است و در هر دور از حلقه، کلید و مقدار را با هم به شما می‌دهد.

Python

for key, value in user_info.items():
    print("کلید:", key, "- مقدار:", value)

جمع‌بندی

دیکشنری‌ها در پایتون مانند پایگاه‌های داده کوچک عمل می‌کنند. هر زمان که نیاز داشتید داده‌ها را به جای ترتیب قرارگیری، بر اساس یک شناسه یا نام خاص (مانند مشخصات کالاها، تنظیمات برنامه یا اطلاعات کاربران) ذخیره و بازیابی کنید، دیکشنری‌ها بهترین، سریع‌ترین و منطقی‌ترین انتخاب شما در ساختمان‌های داده پایتون خواهند بود.

بدون دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *