🐍 کتابخانه مرجع پایتون

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

دیکشنری‌ها یکی از قدرتمندترین ساختارهای داده در پایتون هستند که داده‌ها را به صورت کلید-مقدار (Key-Value) ذخیره می‌کنند. هر کلید باید یکتا (Unique) و غیرقابل تغییر (مانند رشته، عدد یا تاپل) باشد، اما مقدار می‌تواند هر نوع داده‌ای باشد.

🔹 تعریف دیکشنری

# دیکشنری خالی
empty = {}

# دیکشنری با داده
person = {
    "name": "Saba",
    "age": 28,
    "city": "Tehran"
}

# دیکشنری با کلیدهای عددی
scores = {1: "A", 2: "B", 3: "C"}

print(empty)
print(person)
print(scores)
⏳ برای اجرا دکمه را بزنید...

🔹 دسترسی به مقادیر با کلید

person = {
    "name": "Saba",
    "age": 28,
    "city": "Tehran"
}

# دسترسی مستقیم با کلید
print(person["name"])   # Saba
print(person["age"])    # 28

# دسترسی با get (ایمن‌تر)
print(person.get("city"))       # Tehran
print(person.get("country"))    # None (بدون خطا)
⏳ برای اجرا دکمه را بزنید...

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

person = {"name": "Saba", "age": 28}

# تغییر مقدار
person["age"] = 29
print(person)

# اضافه کردن کلید جدید
person["city"] = "Tehran"
person["job"] = "Engineer"
print(person)

# update: به‌روزرسانی چند مقدار
person.update({"age": 30, "country": "Iran"})
print(person)
⏳ برای اجرا دکمه را بزنید...

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

person = {
    "name": "Saba",
    "age": 28,
    "city": "Tehran",
    "job": "Engineer"
}

# pop: حذف با کلید و دریافت مقدار
age = person.pop("age")
print(f"Removed age: {age}")
print(person)

# popitem: حذف آخرین جفت کلید-مقدار
last_item = person.popitem()
print(f"Removed: {last_item}")
print(person)

# del: حذف با کلید
del person["city"]
print(person)

# clear: پاک کردن تمام عناصر
person.clear()
print(person)
⏳ برای اجرا دکمه را بزنید...

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

person = {
    "name": "Saba",
    "age": 28,
    "city": "Tehran"
}

# تکرار روی کلیدها
print("Keys:")
for key in person:
    print(key)

# تکرار روی مقادیر
print("\nValues:")
for value in person.values():
    print(value)

# تکرار روی جفت‌های کلید-مقدار
print("\nKey-Value pairs:")
for key, value in person.items():
    print(f"{key}: {value}")
⏳ برای اجرا دکمه را بزنید...

🔹 متدهای مفید دیکشنری

person = {
    "name": "Saba",
    "age": 28,
    "city": "Tehran"
}

# len: تعداد جفت‌های کلید-مقدار
print(f"Length: {len(person)}")

# keys: دریافت کلیدها
print(f"Keys: {person.keys()}")

# values: دریافت مقادیر
print(f"Values: {person.values()}")

# items: دریافت جفت‌های کلید-مقدار
print(f"Items: {person.items()}")

# in: بررسی وجود کلید
print("name" in person)   # True
print("country" in person) # False
⏳ برای اجرا دکمه را بزنید...

🔹 دیکشنری‌های تو در تو

students = {
    "saba": {
        "age": 22,
        "city": "Tehran",
        "grades": [18, 19, 17]
    },
    "ali": {
        "age": 24,
        "city": "Shiraz",
        "grades": [15, 16, 14]
    }
}

# دسترسی به داده‌ها
print(students["saba"]["city"])          # Tehran
print(students["ali"]["grades"][1])     # 16

# اضافه کردن نمره جدید
students["saba"]["grades"].append(20)
print(students["saba"]["grades"])
⏳ برای اجرا دکمه را بزنید...

🔹 متدهای setdefault و fromkeys

# setdefault: دریافت مقدار یا تنظیم مقدار پیش‌فرض
person = {"name": "Saba"}
age = person.setdefault("age", 25)  # کلید وجود ندارد، مقدار 25 تنظیم می‌شود
print(person)
print(age)

# fromkeys: ایجاد دیکشنری از کلیدها با مقدار پیش‌فرض
keys = ["name", "age", "city"]
new_dict = dict.fromkeys(keys, "Unknown")
print(new_dict)

# مقدار پیش‌فرض متفاوت برای هر کلید
new_dict2 = dict.fromkeys(keys, None)
print(new_dict2)
⏳ برای اجرا دکمه را بزنید...

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

# مربع اعداد
squares = {x: x**2 for x in range(5)}
print(squares)

# فیلتر کردن
even_squares = {x: x**2 for x in range(10) if x % 2 == 0}
print(even_squares)

# تبدیل لیست به دیکشنری
names = ["Saba", "Ali", "Reza"]
name_length = {name: len(name) for name in names}
print(name_length)
⏳ برای اجرا دکمه را بزنید...

🔹 مثال جامع: مدیریت فروشگاه

# دیکشنری محصولات با قیمت و تعداد
products = {
    "apple": {"price": 15000, "stock": 10},
    "banana": {"price": 12000, "stock": 15},
    "cherry": {"price": 20000, "stock": 5}
}

# نمایش محصولات
print("Product List:")
for name, info in products.items():
    print(f"{name}: {info['price']} Rials (Stock: {info['stock']})")

# خرید محصول
def buy_product(name, quantity):
    if name in products and products[name]["stock"] >= quantity:
        products[name]["stock"] -= quantity
        total = products[name]["price"] * quantity
        print(f"Total price for {quantity} {name}: {total} Rials")
    else:
        print(f"Product {name} not available or insufficient stock.")

# تست خرید
buy_product("apple", 2)
buy_product("banana", 20)

# نمایش موجودی بعد از خرید
print("\nUpdated Stock:")
for name, info in products.items():
    print(f"{name}: {info['stock']} remaining")
⏳ برای اجرا دکمه را بزنید...

📌 نکات کلیدی

← قبلی: تاپل‌ها → بعدی: مجموعه‌ها ↑ بازگشت به فهرست مقدماتی