پایتونمقدماتی۶ دقیقه مطالعهPython 3.12+

دیکشنری‌ها

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

آنچه در این درس می‌آموزید

  • دیکشنری بسازید و با کلید مقدار بخوانید و بنویسید
  • تفاوت دسترسی مستقیم و متد get را تشخیص دهید
  • دیکشنری را با items پیمایش کنید و ساختار تودرتو را بخوانید
نویسنده: تیم داکنامه · بازبینی: ۲۰۲۶-۱۰-۳۰
فهرست مطالب
پیش‌نیاز: لیست‌ها

لیست عضوهایش را با شماره جایگاه می‌شناسد: عضو اول، عضو دوم و بعد. اما در دنیای واقعی بیشتر با نام به داده رجوع می‌کنیم؛ شمارهٔ تماس «سارا»، قیمت «کتاب»، سن «کاربر». دیکشنری (Dictionary) ساختاری است که هر مقدار را به یک کلید (Key) می‌بندد و به‌جای اندیس عددی، با همان کلید به داده دسترسی می‌دهد. هر جا رابطهٔ «نام ← مقدار» دارید، از اطلاعات کاربر تا شمارش کلمه‌ها، دیکشنری ابزار درست است.

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

ساخت دیکشنری و دسترسی با کلید

دیکشنری با آکولاد ساخته می‌شود و هر جفت «کلید: مقدار» با ویرگول از جفت بعدی جدا می‌شود:

contact.py
contact = {"name": "Sara", "age": 25}
print(contact["name"])
print(contact["age"])
خروجی کد

Sara 25

دسترسی با کروشه انجام می‌شود، ولی داخل کروشه کلید است نه اندیس. کلید در این مثال رشته است؛ عدد و تاپل هم می‌توانند کلید باشند.

کلید ناموجود و متد get

اگر کلید در دیکشنری نباشد، دسترسی مستقیم با کروشه خطا می‌دهد:

python
contact = {"name": "Sara"}
print(contact["phone"])
خروجی کد

KeyError: 'phone'

متد get همین دسترسی را با مهربانی بیشتری انجام می‌دهد: برای کلید ناموجود خطا نمی‌دهد، بلکه None برمی‌گرداند؛ و اگر مقدار جایگزین بدهید، همان را:

get.py
contact = {"name": "Sara"}
print(contact.get("phone"))
print(contact.get("phone", "Not found"))
خروجی کد

None Not found

افزودن، تغییر و حذف

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

inventory.py
inventory = {"pen": 4}
inventory["book"] = 2
inventory["pen"] = 9
print(inventory)
خروجی کد

{'pen': 9, 'book': 2}

کلید pen از قبل بود و مقدارش به‌روز شد؛ کلید book تازه بود و اضافه شد. حذف هم با دستور del انجام می‌شود: del inventory["book"] آن جفت را پاک می‌کند.

پیمایش دیکشنری

برای گذر از همهٔ جفت‌ها، متد items به کار می‌آید:

loop_dict.py
prices = {"book": 90, "pen": 20}
for key, value in prices.items():
    print(key, value)
print("book" in prices)
print("bag" in prices)
خروجی کد

book 90 pen 20 True False

متد items هر جفت را به شکل تاپل می‌دهد و unpacking درس قبل آن را در یک سطر به دو متغیر key و value می‌شکند. عملگر in روی دیکشنری کلیدها را می‌آزماید؛ و چون دیکشنری بر پایهٔ جدول هش کار می‌کند، این آزمون حتی در دیکشنری‌های بسیار بزرگ هم سریع می‌ماند.

دیکشنری تودرتو

مقدار دیکشنری می‌تواند خودش دیکشنری باشد؛ این‌طور داده‌های ساخت‌یافته مثل اطلاعات کاربرها را راحت مدل می‌کنید:

nested.py
users = {"sara": {"age": 25, "city": "Tehran"}}
print(users["sara"]["city"])
خروجی کد

Tehran

دو کروشه پشت سر هم: اول کلید بیرونی، بعد کلید درونی. همین الگو تا هر عمقی ادامه دارد.

تمرین‌ها

تمرین

تمرین ۱ — شمارش تکرارها

تابعی به نام count_items بنویسید که لیستی از مقادیر بگیرد و دیکشنری‌ای برگرداند که هر مقدار را به تعداد تکرارش نگاشت کند؛ برای ["آب", "چای", "آب"] نتیجه باید {'آب': 2, 'چای': 1} شود. راهنمایی: متد get با مقدار پیش‌فرض صفر، این تابع را کوتاه نگه می‌دارد.

python
# Write your code here
نمایش راه‌حل
python
def count_items(items):
    counts = {}
    for item in items:
        counts[item] = counts.get(item, 0) + 1
    return counts

print(count_items(["water", "tea", "water"]))
خروجی کد

{'water': 2, 'tea': 1}

::: :::

خلاصه

  • دیکشنری داده را با کلید نگه می‌دارد؛ خواندن و نوشتن با کروشه و کلید انجام می‌شود.
  • دسترسی مستقیم به کلید ناموجود خطای KeyError می‌دهد؛ get به‌جایش None یا مقدار پیش‌فرض برمی‌گرداند.
  • تخصیص به کلید تازه یعنی افزودن و به کلید موجود یعنی به‌روزرسانی؛ حذف با del است.
  • items جفت‌ها را برای پیمایش می‌دهد و in وجود کلید را سریع می‌آزماید.
  • کلید باید تغییرناپذیر باشد: رشته، عدد و تاپل مجازند، لیست نه.

مجموعه‌های دادهٔ پایتون یک عضو دیگر هم دارند: ساختاری که نه اندیس دارد نه کلید؛ فقط اعضای یکتا. در درس بعدی با مجموعه آشنا می‌شویم.

منابع و ارجاع‌ها

درس‌های مرتبط