Kahibaro
Discord Login Register

دیکشنری‌ها (Dictionaries)

آشنایی با دیکشنری‌ها در پایتون

دیکشنری (dict) یک ساختار داده‌ای کلید–مقدار است. به جای این‌که مثل لیست با «شمارهٔ مکان» (ایندکس) کار کنید، در دیکشنری با «کلید»ها کار می‌کنید.

یک دیکشنری ساده:

student = {
    "name": "Ali",
    "age": 20,
    "city": "Tehran"
}

در این مثال:

هر کلید به یک مقدار متصل است؛ می‌توان گفت دیکشنری مثل یک فرهنگ لغت است: «کلمه» (کلید) → «معنا» (مقدار).


ساختن دیکشنری

۱. استفاده از آکولاد `{}`

رایج‌ترین روش:

person = {
    "first_name": "Sara",
    "last_name": "Ahmadi",
    "age": 25
}

می‌توانید دیکشنری خالی بسازید:

empty_dict = {}

و بعداً به آن آیتم اضافه کنید.

۲. استفاده از تابع `dict()`

info = dict(name="Reza", age=30, city="Shiraz")

در این روش کلیدها باید نام‌های معتبری مثل اسم متغیر باشند (نمی‌توانید فاصله بگذارید و …).


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

برای خواندن مقدار یک کلید، از براکت [] استفاده می‌کنیم:

student = {
    "name": "Ali",
    "age": 20,
    "city": "Tehran"
}
print(student["name"])  # Ali
print(student["age"])   # 20

اگر کلید وجود نداشته باشد، ارور می‌گیرید (KeyError):

print(student["phone"])  # خطا

استفاده از متد `get()`

اگر مطمئن نیستید کلید وجود دارد، می‌توانید از get() استفاده کنید:

print(student.get("city"))         # Tehran
print(student.get("phone"))        # None
print(student.get("phone", "N/A")) # N/A (مقدار پیش‌فرض)

افزودن و تغییر آیتم‌ها

افزودن یک کلید–مقدار جدید

student = {
    "name": "Ali",
    "age": 20
}
student["city"] = "Tehran"
print(student)
# {'name': 'Ali', 'age': 20, 'city': 'Tehran'}

تغییر مقدار یک کلید موجود

student["age"] = 21
print(student["age"])  # 21

اگر کلید قبلاً وجود داشته باشد، مقدارش به‌روزرسانی می‌شود؛ اگر نداشته باشد، اضافه می‌شود.


حذف آیتم‌ها از دیکشنری

استفاده از `del`

student = {
    "name": "Ali",
    "age": 21,
    "city": "Tehran"
}
del student["city"]
print(student)
# {'name': 'Ali', 'age': 21}

اگر کلید وجود نداشته باشد، با del خطا می‌گیرید.

استفاده از `pop()`

pop() مقدار حذف‌شده را هم برمی‌گرداند:

age = student.pop("age")
print(age)     # 21
print(student) # {'name': 'Ali'}

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

phone = student.pop("phone", "not found")
print(phone)  # not found

حذف همهٔ آیتم‌ها با `clear()`

student.clear()
print(student)  # {}

پیمایش (loop) روی دیکشنری

فقط روی کلیدها (`keys`)

user = {
    "username": "ali123",
    "email": "ali@example.com",
    "active": True
}
for key in user:
    print(key)
# username
# email
# active

برابر است با:

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

فقط روی مقدارها (`values`)

for value in user.values():
    print(value)
# ali123
# ali@example.com
# True

روی هر دو (`items` → جفت کلید و مقدار)

for key, value in user.items():
    print(key, ":", value)
# username : ali123
# email : ali@example.com
# active : True

کلیدها و مقادیر معتبر در دیکشنری

نکات مهم:

مثال: کلید تکراری

data = {
    "a": 1,
    "b": 2,
    "a": 3
}
print(data)  # {'a': 3, 'b': 2}

کلید "a" دوبار آمده، مقدار نهایی ۳ است.


بررسی وجود یک کلید در دیکشنری

برای فهمیدن این‌که یک کلید وجود دارد یا نه، از in استفاده می‌کنیم:

product = {
    "name": "Laptop",
    "price": 25000000
}
print("price" in product)  # True
print("color" in product)  # False
if "color" not in product:
    product["color"] = "black"

کاربردهای رایج دیکشنری

۱. ذخیرهٔ اطلاعات یک موجودیت (مثلاً یک کاربر)

user = {
    "id": 101,
    "name": "Sara",
    "email": "sara@example.com",
    "is_admin": False
}

۲. نگه‌داشتن تنظیمات (Configuration)

settings = {
    "theme": "dark",
    "language": "fa",
    "autosave": True
}

۳. شمارش تعداد تکرارها (Frequency)

text = "apple banana apple orange apple banana"
counts = {}
for word in text.split():
    if word in counts:
        counts[word] += 1
    else:
        counts[word] = 1
print(counts)
# {'apple': 3, 'banana': 2, 'orange': 1}

دیکشنری‌های تو در تو (Nested Dictionaries)

می‌توانید دیکشنری داخل دیکشنری داشته باشید؛ مثلاً چند دانش‌آموز، هرکدام با اطلاعات جداگانه:

students = {
    "s1": {"name": "Ali", "age": 20},
    "s2": {"name": "Sara", "age": 22},
}
print(students["s1"]["name"])  # Ali

چند متد مهم دیکشنری

به‌جز get و pop و clear که دیدیم، متدهای مفید دیگری هم هست.

`update()` برای ترکیب/به‌روزرسانی

user = {
    "username": "ali123",
    "email": "ali@old.com"
}
user.update({
    "email": "ali@new.com",
    "active": True
})
print(user)
# {'username': 'ali123', 'email': 'ali@new.com', 'active': True}

`keys()`، `values()`، `items()`

این متدها برای گرفتن نمایی از کلیدها، مقدارها و جفت‌هاست؛ معمولاً در حلقه‌ها استفاده می‌شوند:

print(user.keys())   # dict_keys([...])
print(user.values()) # dict_values([...])
print(user.items())  # dict_items([...])

می‌توانید آن‌ها را به لیست تبدیل کنید:

keys_list = list(user.keys())

تبدیل بین لیست و دیکشنری (مثال ساده)

گاهی داده به‌صورت لیست جفت‌هاست و می‌خواهید دیکشنری بسازید:

pairs = [("a", 1), ("b", 2), ("c", 3)]
d = dict(pairs)
print(d)  # {'a': 1, 'b': 2, 'c': 3}

یا می‌خواهید دیکشنری را به لیست جفت‌ها تبدیل کنید:

items_list = list(d.items())
print(items_list)
# [('a', 1), ('b', 2), ('c', 3)]

تمرین‌های پیشنهادی

۱. دیکشنری‌ای به نام book بسازید که کلیدهای "title", "author", "year" داشته باشد و اطلاعات یک کتاب دلخواه را در آن ذخیره کنید. سپس:

۲. یک رشته مثل "red blue red green blue blue" را بگیرید و با استفاده از دیکشنری، تعداد تکرار هر رنگ را بشمارید و نتیجه را چاپ کنید.

۳. دیکشنری‌ای از چند کاربر بسازید (به‌صورت تو در تو) که برای هر کاربر، نام و سن را نگه دارد. سپس با حلقه:

Views: 4

Comments

Please login to add a comment.

Don't have an account? Register now!