مرحباً بك في الدرس السادس من سلسلة تعلم بايثون وبناء API عملي. في الدروس السابقة، تعلمنا كيفية تخزين قيمة واحدة في متغير، مثل رقم أو نص. لكن ماذا لو أردنا تخزين قائمة بأسماء طلاب الفصل؟ أو تخزين معلومات شخص مثل اسمه وعمره وبريده الإلكتروني؟ هنا يأتي دور القوائم (Lists) والقواميس (Dictionaries)، وهما من أهم أدوات تخزين البيانات في بايثون.
تخيل أنك تبني تطبيقاً لإدارة المهام (To-Do List). ستحتاج إلى تخزين عدة مهام، وكل مهمة لها عنوان ووصف وحالة (مكتملة أم لا). لا يمكنك إنشاء متغير منفصل لكل مهمة، لأن ذلك سيجعل الكود فوضوياً وغير قابل للتوسع. القوائم تسمح لك بتخزين مجموعة من العناصر في متغير واحد، والقواميس تسمح لك بتخزين بيانات مرتبطة بمفاتيح (مثل "العنوان" و"الوصف")، مما يجعل التعامل مع البيانات منظماً وسهل الفهم.
القائمة هي مجموعة مرتبة من العناصر، يمكن أن تكون من أي نوع (أرقام، نصوص، أو حتى قوائم أخرى). يتم تعريفها باستخدام الأقواس المربعة []، وتفصل العناصر بفاصلة.
# إنشاء قائمة بأسماء طلاب
students = ["أحمد", "سارة", "خالد", "نورة"]
# طباعة القائمة كاملة
print(students) # Output: ['أحمد', 'سارة', 'خالد', 'نورة']
# الوصول إلى العنصر الأول (التفقيط يبدأ من 0)
print(students[0]) # Output: أحمد
# الوصول إلى العنصر الأخير باستخدام الرقم -1
print(students[-1]) # Output: نورة
# تغيير قيمة عنصر
students[1] = "مريم"
print(students) # Output: ['أحمد', 'مريم', 'خالد', 'نورة']
القوائم توفر دوالاً جاهزة لتعديلها:
append(item): إضافة عنصر إلى نهاية القائمة.remove(item): إزالة أول عنصر يطابق القيمة المعطاة.len(list): الحصول على عدد العناصر في القائمة.for item in list:: التكرار على جميع العناصر.# إضافة طالب جديد
students.append("علي")
print(students) # Output: ['أحمد', 'مريم', 'خالد', 'نورة', 'علي']
# إزالة طالب
students.remove("خالد")
print(students) # Output: ['أحمد', 'مريم', 'نورة', 'علي']
# معرفة عدد الطلاب
print(f"عدد الطلاب: {len(students)}") # Output: عدد الطلاب: 4
# التكرار على القائمة وطباعة كل طالب
for student in students:
print(f"مرحباً {student}")
القاموس هو مجموعة غير مرتبة من أزواج (مفتاح: قيمة). المفتاح (Key) هو معرف فريد (عادةً نص)، والقيمة (Value) يمكن أن تكون أي شيء (نص، رقم، قائمة، أو حتى قاموس آخر). يتم تعريفه باستخدام الأقواس المعقوفة {}.
# إنشاء قاموس يمثل مهمة واحدة
task = {
"title": "شراء حليب",
"description": "اذهب إلى السوبرماركت واشتر حليباً",
"completed": False
}
# طباعة القاموس كاملاً
print(task) # Output: {'title': 'شراء حليب', 'description': 'اذهب إلى السوبرماركت واشتر حليباً', 'completed': False}
# الوصول إلى قيمة باستخدام المفتاح
print(task["title"]) # Output: شراء حليب
# تغيير قيمة مفتاح
task["completed"] = True
print(task["completed"]) # Output: True
# إضافة مفتاح جديد
task["priority"] = "عالية"
print(task) # Output: {'title': 'شراء حليب', 'description': 'اذهب إلى السوبرماركت واشتر حليباً', 'completed': True, 'priority': 'عالية'}
dict.keys(): الحصول على جميع المفاتيح.dict.values(): الحصول على جميع القيم.dict.items(): الحصول على أزواج (مفتاح، قيمة) للتكرار عليها.in: التحقق من وجود مفتاح في القاموس.# طباعة جميع المفاتيح
print(task.keys()) # Output: dict_keys(['title', 'description', 'completed', 'priority'])
# طباعة جميع القيم
print(task.values()) # Output: dict_values(['شراء حليب', 'اذهب إلى السوبرماركت واشتر حليباً', True, 'عالية'])
# التكرار على المفاتيح والقيم معاً
for key, value in task.items():
print(f"{key}: {value}")
# التحقق من وجود مفتاح
if "title" in task:
print("المهمة لها عنوان")
في التطبيقات العملية، ستستخدم غالباً قائمة تحتوي على عدة قواميس. هذا هو الهيكل الأساسي لمعظم APIs. على سبيل المثال، قائمة المهام ستكون قائمة، وكل مهمة فيها ستكون قاموساً.
# قائمة تحتوي على ثلاث مهام
tasks = [
{"title": "شراء حليب", "completed": False},
{"title": "قراءة كتاب", "completed": True},
{"title": "مراجعة الكود", "completed": False}
]
# طباعة عناوين المهام غير المكتملة
for task in tasks:
if not task["completed"]:
print(f"يجب إكمال: {task['title']}")
# إضافة مهمة جديدة
new_task = {"title": "تعلم بايثون", "completed": False}
tasks.append(new_task)
print(f"عدد المهام الآن: {len(tasks)}") # Output: عدد المهام الآن: 4
KeyError. يمكنك استخدام دالة get() الآمنة: task.get("priority", "غير محدد").
len().get() أو تحقق باستخدام in.قم بإنشاء برنامج صغير يقوم بالتالي:
shopping_list.append() (مثلاً: "تفاح"، "خبز"، "حليب").item_details يحتوي على مفاتيح: name (اسم العنصر)، quantity (الكمية)، price (السعر).for لطباعة جميع العناصر في shopping_list.# الحل
shopping_list = []
shopping_list.append("تفاح")
shopping_list.append("خبز")
shopping_list.append("حليب")
item_details = {
"name": "تفاح",
"quantity": 3,
"price": 5.5
}
print(f"سأشتري {item_details['name']}، الكمية: {item_details['quantity']}، السعر: {item_details['price']}")
for item in shopping_list:
print(f"- {item}")
بهذا نكون قد تعلمنا أساسيات القوائم والقواميس، وهما حجر الزاوية في بناء أي تطبيق عملي. في الدرس القادم، سنتعلم كيفية التعامل مع الملفات لتخزين هذه البيانات بشكل دائم. استمر في التدرب، فالإتقان يأتي مع الممارسة!
جاري تحميل التقييمات...