📚 دیکشنریها (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")
⏳ برای اجرا دکمه را بزنید...
📌 نکات کلیدی
- ✅ دیکشنریها با
{}تعریف میشوند و شامل کلید-مقدار هستند. - ✅ کلیدها باید غیرقابل تغییر (مانند رشته، عدد، تاپل) و یکتا باشند.
- ✅ با
d[key]به مقدار دسترسی پیدا کنید (اگر کلید نباشد، خطا میدهد). - ✅ با
get()به مقدار دسترسی پیدا کنید (اگر کلید نباشد،Noneبرمیگرداند). - ✅
keys()،values()وitems()برای تکرار روی دیکشنری. - ✅
pop()،popitem()وdelبرای حذف عناصر. - ✅
update()برای بهروزرسانی چند مقدار. - ✅
setdefault()برای تنظیم مقدار پیشفرض. - ✅
dict comprehensionروشی قدرتمند برای ایجاد دیکشنری.