دیکشنری در پایتون (Dictionary)
دیکشنری یکی از پرکاربردترین ساختارهای داده در پایتونه. به جای ذخیره مقادیر با ایندکس عددی، در دیکشنری هر مقدار یک کلید (Key) دلخواه داره. فکر کن مثل یه دفترچه تلفن: اسم شخص → شماره تلفن. در این جلسه قدم به قدم و با ۳ مثال کامل یادش میگیریم.
دیکشنری چیست؟
دیکشنری یا dict مجموعهای از جفتهای
کلید: مقدار است. هر کلید مثل یک برچسب عمل
میکند که مقدار مشخصی پشتش قرار دارد.
- کلیدها یکتا هستند — نمیتوان دو کلید یکسان داشت
- مقادیر میتوانند هر نوعی باشند — عدد، رشته، لیست، حتی دیکشنری دیگر
- ترتیب حفظ میشود — از پایتون ۳.۷ به بعد
- تغییرپذیر هستند — میتوان اضافه، حذف و ویرایش کرد
مثال اول — ساخت و دسترسی به دیکشنری
سادهترین کار: ساخت یک دیکشنری و خواندن مقادیر از آن. دیکشنری را
با آکولاد {} میسازیم و کلید و مقدار را با
: از هم جدا میکنیم.
# ساخت یک دیکشنری برای اطلاعات یک دانشآموز
student = {
"name": "علی رضایی",
"age": 20,
"grade": 17.5,
"passed": True
}
# دسترسی با کلید — داخل کروشه
print(student["name"]) # علی رضایی
print(student["grade"]) # 17.5
# دسترسی با .get() — اگه کلید نباشد None برمیگرداند
print(student.get("email")) # None
print(student.get("email", "ندارد")) # ندارد
# تعداد کلیدها
print(len(student)) # 4
[] و .get():
اگر کلید وجود نداشته باشد، student["email"] خطای
KeyError میدهد. اما
student.get("email") بدون خطا
None برمیگرداند. در کدهای واقعی بیشتر از
.get() استفاده کن.
مثال دوم — اضافه کردن، ویرایش و حذف
دیکشنری تغییرپذیر است. میتوانی بعد از ساخت، مقادیر جدید اضافه کنی، موجودیها را ویرایش کنی یا کلیدی را حذف کنی.
product = {
"name": "لپتاپ",
"price": 35_000_000,
"stock": 10
}
# اضافه کردن کلید جدید
product["brand"] = "Asus"
print(product)
# ویرایش مقدار موجود
product["price"] = 32_000_000 # تخفیف
product["stock"] -= 1 # یکی فروخته شد
# حذف یک کلید با del
del product["brand"]
# حذف و گرفتن مقدار با pop()
old_price = product.pop("price")
print("قیمت قبلی:", old_price) # 32000000
print(product)
# بررسی وجود کلید
print("name" in product) # True
print("price" in product) # False — حذف شد
مثال سوم — حلقه زدن و متدهای مهم
یکی از کارهای خیلی رایج، حلقه زدن روی دیکشنری برای پردازش تمام دادههاست. سه راه اصلی داریم:
scores = {
"علی": 18,
"سارا": 20,
"رضا": 15,
"مینا": 19
}
# ۱. فقط کلیدها
for name in scores.keys():
print(name)
# ۲. فقط مقادیر
for score in scores.values():
print(score)
# ۳. هر دو با هم — رایجترین روش
for name, score in scores.items():
print(f"{name}: {score}")
# پیدا کردن بالاترین نمره
best = max(scores, key=scores.get)
print(f"نفر اول: {best} با نمره {scores[best]}")
# نفر اول: سارا با نمره 20
.items() استفاده میکنی چون هم کلید هم مقدار لازم
داری. این الگو را حفظ کن — خیلی بهکارت میآید.
دیکشنری تودرتو (Nested Dictionary)
مقدار یک کلید میتواند خودش یک دیکشنری دیگر باشد. این برای نگهداری اطلاعات پیچیدهتر خیلی مفید است:
users = {
"u001": {
"name": "علی",
"age": 25,
"city": "تهران"
},
"u002": {
"name": "سارا",
"age": 30,
"city": "اصفهان"
}
}
# دسترسی به دادههای تودرتو
print(users["u001"]["name"]) # علی
print(users["u002"]["city"]) # اصفهان
# نمایش همه کاربران
for user_id, info in users.items():
print(f"{user_id}: {info['name']} از {info['city']}")
جدول متدهای مهم
یک مرور سریع از متدهایی که بیشتر استفاده میکنی:
d = {"a": 1, "b": 2}
d.get("a") # 1 — دسترسی امن
d.keys() # dict_keys(['a', 'b'])
d.values() # dict_values([1, 2])
d.items() # dict_items([('a',1),('b',2)])
d.pop("a") # 1 — حذف و برگرداندن
d.update({"c": 3}) # اضافه کردن دستهجمعی
d.clear() # خالی کردن کامل
len(d) # تعداد کلیدها
"b" in d # True — بررسی وجود کلید
یک دیکشنری برای اطلاعات خودت بساز با کلیدهای name،
age، city و job. سپس
اطلاعات را با یک حلقه for و
.items() به صورت زیبا چاپ کن.
راهنمایی 💡
me = {
"name": "اسم تو",
"age": 25,
"city": "شهر تو",
"job": "دانشجو"
}
for key, value in me.items():
print(f"{key}: {value}")
یک دیکشنری از نام و نمره ۵ دانشآموز بساز. سپس برنامهای بنویس که: الف) میانگین نمرات را محاسبه کند. ب) نام دانشآموزانی که نمرهشان بالای ۱۵ است را چاپ کند.
راهنمایی 💡
scores = {"علی": 18, "سارا": 14, "رضا": 20, "مینا": 12, "حسن": 16}
avg = sum(scores.values()) / len(scores)
print(f"میانگین: {avg}")
for name, score in scores.items():
if score > 15:
print(name)
یک رشته از کاربر بگیر و تعداد تکرار هر حرف را با دیکشنری بشمار و
چاپ کن. مثلاً برای "hello" جواب باید
h:1, e:1, l:2, o:1 باشد.
راهنمایی 💡
text = input("یک کلمه وارد کن: ")
counter = {}
for char in text:
counter[char] = counter.get(char, 0) + 1
for char, count in counter.items():
print(f"{char}: {count}")