۶
دیکشنری و مجموعه 📚
یاد میگیریم چطور دادهها رو با کلید ذخیره کنیم!
دیکشنریها (Dictionaries)
دیکشنریها mutable هستند و دادهها رو به صورت جفت کلید-مقدار ذخیره میکنن:
ایجاد و دسترسی به دیکشنری
# ایجاد دیکشنری
student = {
"name": "علی",
"age": 20,
"major": "کامپیوتر",
"gpa": 18.5
}
# دسترسی به مقادیر
print(student["name"]) # علی
print(student["age"]) # 20
# استفاده از get برای جلوگیری از خطا
print(student.get("phone", "موجود نیست")) # موجود نیست
# اضافه کردن یا تغییر مقدار
student["phone"] = "09123456789"
student["age"] = 21
# حذف کردن
del student["gpa"]
phone = student.pop("phone")
# گرفتن کلیدها و مقادیر
print(student.keys()) # dict_keys(['name', 'age', 'major'])
print(student.values()) # dict_values(['علی', 21, 'کامپیوتر'])
print(student.items()) # dict_items([('name', 'علی'), ('age', 21), ('major', 'کامپیوتر')])
پیمایش دیکشنری
روشهای مختلفی برای پیمایش دیکشنری وجود داره:
پیمایش دیکشنری
person = {"name": "سارا", "age": 25, "city": "تهران"}
# پیمایش کلیدها
for key in person:
print(key, ":", person[key])
# پیمایش مستقیم کلیدها
for key in person.keys():
print(key)
# پیمایش مقادیر
for value in person.values():
print(value)
# پیمایش همزمان کلید و مقدار
for key, value in person.items():
print(f"{key}: {value}")
مجموعهها (Sets)
مجموعهها mutable هستند و فقط مقادیر یکتا رو ذخیره میکنن:
کار با مجموعهها
# ایجاد مجموعه
fruits = {"سیب", "موز", "پرتقال"}
numbers = {1, 2, 3, 4, 5}
# اضافه کردن
fruits.add("انگور")
fruits.add("سیب") # اضافه نمیشود چون تکراری است
# حذف کردن
fruits.remove("موز")
fruits.discard("هلو") # اگر وجود نداشته باشد خطا نمیدهد
# عملیات مجموعهای
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
print(set1 | set2) # اجتماع: {1, 2, 3, 4, 5, 6}
print(set1 & set2) # اشتراک: {3, 4}
print(set1 - set2) # تفاضل: {1, 2}
print(set1 ^ set2) # تفاضل متقارن: {1, 2, 5, 6}
دیکشنریهای تو در تو
میتونیم دیکشنریهایی داشته باشیم که خودشون شامل دیکشنریهای دیگه هستند:
دیکشنریهای تو در تو
# دیکشنری تو در تو برای اطلاعات دانشجویان
students = {
"student1": {
"name": "علی",
"age": 20,
"grades": [18, 19, 17]
},
"student2": {
"name": "سارا",
"age": 21,
"grades": [19, 20, 18]
}
}
# دسترسی به اطلاعات
print(students["student1"]["name"]) # علی
print(students["student2"]["grades"][0]) # 19
# اضافه کردن دانشجوی جدید
students["student3"] = {
"name": "رضا",
"age": 22,
"grades": [16, 17, 18]
}
# پیمایش دیکشنری تو در تو
for student_id, info in students.items():
print(f"دانشجو {student_id}:")
for key, value in info.items():
print(f" {key}: {value}")
تمرین! 🧠
برنامهای بنویس که تعداد تکرار هر کلمه در یک رشته رو بشماره و نتیجه رو در یک دیکشنری ذخیره کنه. سپس کلمهای که بیشترین تکرار رو داره پیدا کنه.
جواب تمرین
text = "پایتون زبان برنامه نویسی عالی است پایتون ساده و قدرتمند است"
# تقسیم متن به کلمات
words = text.split()
# شمارش تکرار کلمات
word_count = {}
for word in words:
if word in word_count:
word_count[word] += 1
else:
word_count[word] = 1
print("تکرار کلمات:", word_count)
# پیدا کردن کلمه با بیشترین تکرار
most_common = max(word_count, key=word_count.get)
print(f"کلمه با بیشترین تکرار: '{most_common}' با {word_count[most_common]} بار")