أساسيات بايثون 18: شرح القواميس Dictionaries في Python للمبتدئين

أساسيات بايثون 18 شرح القواميس Dictionaries في Python للمبتدئين

بعد أن تعلمنا في الدروس السابقة القوائم Lists و Tuples، نصل الآن إلى نوع مهم جدًا في بايثون وهو القواميس Dictionaries.

القاموس في Python يُستخدم لتخزين البيانات بطريقة مختلفة عن القائمة. بدل أن تصل إلى العنصر برقم الفهرس مثل list[0]، تصل إليه باستخدام مفتاح key مثل user["name"].

في هذا الدرس من سلسلة أساسيات بايثون على بايثون العرب ستتعلم ما هو Dictionary، وكيف تنشئ قاموسًا، وكيف تصل إلى القيم، وتعدلها، وتضيف عناصر جديدة، وتحذف عناصر، مع شرح أهم دوال القواميس مثل keys() و values() و items() و get().

{getToc} $title={محتوى المقال}

{alertInfo} القاموس Dictionary في بايثون يخزن البيانات على شكل مفتاح وقيمة: كل key يقابله value.

شرح فكرة Dictionary في Python وكيف يخزن البيانات على شكل مفتاح وقيمة

ما هو Dictionary في بايثون؟

القاموس Dictionary هو نوع بيانات في بايثون يُستخدم لتخزين مجموعة من البيانات على شكل أزواج:

key : value

يعني كل قيمة داخل القاموس لها مفتاح خاص بها.

مثال بسيط:

student = {
    "name": "Ahmed",
    "age": 20,
    "grade": "A"
}

في هذا المثال:

  • "name" هو المفتاح، وقيمته "Ahmed".
  • "age" هو المفتاح، وقيمته 20.
  • "grade" هو المفتاح، وقيمته "A".

لماذا نستخدم Dictionary بدل List؟

استخدم Dictionary عندما تريد تخزين بيانات لها أسماء واضحة، وليس مجرد عناصر مرتبة بأرقام.

مثلًا لو عندك بيانات طالب، استخدام القاموس أوضح بكثير:

student = {
    "name": "Sara",
    "age": 19,
    "city": "Amman"
}

بدل أن تحفظها في List وتضطر تتذكر أن الاسم في الفهرس 0 والعمر في الفهرس 1:

student = ["Sara", 19, "Amman"]
{alertSuccess} استخدم Dictionary عندما تكون البيانات عبارة عن خصائص واضحة مثل: الاسم، العمر، المدينة، السعر، الحالة، الدرجة.

طريقة إنشاء Dictionary في Python

لإنشاء قاموس في بايثون نستخدم الأقواس المعقوفة {}، ونكتب داخلها المفاتيح والقيم.

user = {
    "username": "arabpython",
    "email": "info@example.com",
    "active": True
}

لاحظ أن:

  • القاموس يبدأ بـ { وينتهي بـ }.
  • كل عنصر يتكون من مفتاح وقيمة.
  • نضع نقطتين : بين المفتاح والقيمة.
  • نضع فاصلة , بين كل عنصر والآخر.

الوصول إلى قيمة داخل Dictionary باستخدام المفتاح

للوصول إلى قيمة داخل القاموس، نكتب اسم القاموس ثم المفتاح داخل أقواس مربعة [].

student = {
    "name": "Ahmed",
    "age": 20,
    "grade": "A"
}

print(student["name"])

الناتج:

Ahmed

هنا لم نستخدم رقم الفهرس مثل القائمة، بل استخدمنا المفتاح "name".

مثال يوضح الوصول إلى قيمة داخل Dictionary في بايثون باستخدام المفتاح key

الفرق بين الفهرس في List والمفتاح في Dictionary

في القائمة List تصل إلى العنصر باستخدام رقم:

names = ["Ali", "Sara", "Omar"]

print(names[0])

أما في Dictionary فتصل إلى القيمة باستخدام مفتاح:

user = {
    "name": "Ali",
    "city": "Sanaa"
}

print(user["city"])

الناتج:

Sanaa
{alertInfo} في List نستخدم index مثل 0 و 1 و 2، أما في Dictionary نستخدم key مثل "name" و "age" و "city".

استخدام get() للوصول إلى القيم بأمان

إذا حاولت الوصول إلى مفتاح غير موجود باستخدام الأقواس المربعة، سيظهر خطأ KeyError.

user = {
    "name": "Ali",
    "city": "Sanaa"
}

print(user["age"])

سيظهر خطأ لأن المفتاح "age" غير موجود.

الأفضل في كثير من الحالات استخدام get():

user = {
    "name": "Ali",
    "city": "Sanaa"
}

print(user.get("age"))

الناتج:

None

ويمكنك وضع قيمة افتراضية تظهر عند عدم وجود المفتاح:

user = {
    "name": "Ali",
    "city": "Sanaa"
}

print(user.get("age", "العمر غير موجود"))

الناتج:

العمر غير موجود
{alertWarning} إذا لم تكن متأكدًا أن المفتاح موجود داخل القاموس، استخدم get() بدل الأقواس [] لتجنب KeyError.

تعديل قيمة داخل Dictionary

لتعديل قيمة موجودة داخل القاموس، نستخدم المفتاح ونضع له قيمة جديدة.

student = {
    "name": "Ahmed",
    "grade": "B"
}

student["grade"] = "A"

print(student)

الناتج:

{'name': 'Ahmed', 'grade': 'A'}

إضافة عنصر جديد إلى Dictionary

إذا كتبت مفتاحًا جديدًا غير موجود، سيتم إضافته إلى القاموس.

student = {
    "name": "Ahmed",
    "age": 20
}

student["city"] = "Amman"

print(student)

الناتج:

{'name': 'Ahmed', 'age': 20, 'city': 'Amman'}

حذف عنصر من Dictionary

يمكن حذف عنصر من القاموس باستخدام pop() أو باستخدام del.

الحذف باستخدام pop()

student = {
    "name": "Ahmed",
    "age": 20,
    "city": "Amman"
}

student.pop("city")

print(student)

الناتج:

{'name': 'Ahmed', 'age': 20}

الحذف باستخدام del

student = {
    "name": "Ahmed",
    "age": 20
}

del student["age"]

print(student)

الناتج:

{'name': 'Ahmed'}

شرح إضافة وتعديل وحذف عناصر Dictionary في بايثون باستخدام المفاتيح

فحص وجود مفتاح داخل Dictionary

يمكنك استخدام in لمعرفة هل المفتاح موجود داخل القاموس أم لا.

user = {
    "name": "Ali",
    "email": "ali@example.com"
}

if "email" in user:
    print("البريد موجود")
else:
    print("البريد غير موجود")

الناتج:

البريد موجود

استخدام keys() لعرض المفاتيح

الدالة keys() تعرض مفاتيح القاموس.

student = {
    "name": "Sara",
    "age": 19,
    "grade": "A"
}

print(student.keys())

الناتج:

dict_keys(['name', 'age', 'grade'])

استخدام values() لعرض القيم

الدالة values() تعرض القيم الموجودة داخل القاموس.

student = {
    "name": "Sara",
    "age": 19,
    "grade": "A"
}

print(student.values())

الناتج:

dict_values(['Sara', 19, 'A'])

استخدام items() لعرض المفاتيح والقيم معًا

الدالة items() تعرض كل مفتاح مع قيمته.

student = {
    "name": "Sara",
    "age": 19,
    "grade": "A"
}

print(student.items())

الناتج:

dict_items([('name', 'Sara'), ('age', 19), ('grade', 'A')])

التكرار على Dictionary باستخدام for loop

يمكنك استخدام حلقة for للمرور على مفاتيح القاموس.

student = {
    "name": "Sara",
    "age": 19,
    "grade": "A"
}

for key in student:
    print(key)

الناتج:

name
age
grade

ولو أردت طباعة المفتاح والقيمة معًا:

student = {
    "name": "Sara",
    "age": 19,
    "grade": "A"
}

for key, value in student.items():
    print(key, value)

الناتج:

name Sara
age 19
grade A

ملخص أهم أوامر ودوال القواميس في بايثون مثل keys و values و items و get

مثال عملي: قاموس بيانات طالب

في هذا المثال سننشئ قاموسًا يحتوي على بيانات طالب، ثم نطبع بياناته بطريقة واضحة.

student = {
    "name": "Ahmed",
    "age": 20,
    "major": "Computer Science",
    "grade": "A"
}

print("الاسم:", student["name"])
print("العمر:", student["age"])
print("التخصص:", student["major"])
print("التقدير:", student["grade"])

الناتج:

الاسم: Ahmed
العمر: 20
التخصص: Computer Science
التقدير: A

مثال عملي: قاموس أسعار منتجات

يمكن استخدام Dictionary لتخزين أسماء المنتجات وأسعارها.

prices = {
    "laptop": 800,
    "mouse": 20,
    "keyboard": 50
}

print(prices["mouse"])

الناتج:

20

ويمكن تعديل السعر بسهولة:

prices["mouse"] = 25

print(prices["mouse"])

الناتج:

25

جدول سريع لأهم دوال Dictionary

الدالة ماذا تفعل؟ مثال
get() تجلب قيمة مفتاح بدون إظهار خطأ إذا لم يكن موجودًا user.get("name")
keys() تعرض جميع المفاتيح user.keys()
values() تعرض جميع القيم user.values()
items() تعرض المفاتيح والقيم معًا user.items()
pop() تحذف عنصرًا باستخدام المفتاح user.pop("age")
clear() تحذف كل عناصر القاموس user.clear()

أخطاء شائعة عند استخدام Dictionaries

1. نسيان علامات الاقتباس حول المفتاح النصي

خطأ:

user = {
    "name": "Ali"
}

print(user[name])

الصحيح:

user = {
    "name": "Ali"
}

print(user["name"])

2. طلب مفتاح غير موجود

خطأ:

user = {
    "name": "Ali"
}

print(user["age"])

الأفضل:

user = {
    "name": "Ali"
}

print(user.get("age", "العمر غير موجود"))

3. الخلط بين List و Dictionary

في List تستخدم رقم الفهرس:

names = ["Ali", "Sara"]

print(names[0])

وفي Dictionary تستخدم المفتاح:

user = {
    "name": "Ali"
}

print(user["name"])
{alertError} أكثر خطأ شائع مع Dictionary هو طلب مفتاح غير موجود، وهذا يؤدي غالبًا إلى KeyError.

متى تستخدم Dictionary؟

استخدم القاموس عندما تكون البيانات عبارة عن خصائص مرتبطة بشيء واحد.

أمثلة مناسبة:

  • بيانات مستخدم: الاسم، البريد، العمر.
  • بيانات طالب: الاسم، الدرجة، المادة.
  • منتج في متجر: الاسم، السعر، الكمية.
  • إعدادات برنامج: اللغة، الوضع الليلي، حجم الخط.
  • نتيجة إحصائية: عدد المقالات، عدد الزيارات، عدد التعليقات.

الفرق بين List و Tuple و Dictionary

النوع طريقة الكتابة الوصول للعنصر هل يمكن التعديل؟ متى أستخدمه؟
List [1, 2, 3] باستخدام index نعم عندما تريد قائمة عناصر قابلة للتعديل
Tuple (1, 2, 3) باستخدام index لا عندما تريد بيانات ثابتة
Dictionary {"name": "Ali"} باستخدام key نعم عندما تريد بيانات باسم وقيمة

تدريب بسيط على Dictionary

جرّب كتابة قاموس يحتوي على بيانات كتاب:

  • العنوان
  • المؤلف
  • عدد الصفحات
  • السعر

الحل:

book = {
    "title": "Learn Python",
    "author": "Arab Python",
    "pages": 250,
    "price": 15
}

print(book["title"])
print(book["price"])

أسئلة شائعة

ما هو Dictionary في بايثون؟

هو نوع بيانات يخزن المعلومات على شكل مفتاح وقيمة، مثل "name": "Ali".

ما الفرق بين List و Dictionary؟

في List تصل إلى العنصر باستخدام رقم الفهرس، أما في Dictionary تصل إلى القيمة باستخدام المفتاح.

هل يمكن تعديل Dictionary؟

نعم، يمكن تعديل القيم وإضافة عناصر جديدة وحذف عناصر من القاموس.

ماذا يحدث إذا طلبت مفتاحًا غير موجود؟

إذا استخدمت الأقواس [] سيظهر خطأ KeyError. أما إذا استخدمت get() فسيعيد None أو قيمة افتراضية تحددها.

هل يمكن أن تكون قيمة Dictionary قائمة؟

نعم، يمكن أن تكون القيمة نصًا أو رقمًا أو قائمة أو قاموسًا آخر أو أي نوع بيانات آخر.

روابط مهمة من بايثون العرب

مصدر خارجي مفيد

الخلاصة

القواميس Dictionaries من أهم أنواع البيانات في بايثون، وتُستخدم لتخزين البيانات على شكل مفتاح وقيمة. بدل الوصول إلى العناصر برقم الفهرس كما في List، نصل إلى القيم باستخدام مفاتيح واضحة مثل "name" أو "age".

تعلمت في هذا الدرس كيف تنشئ Dictionary، وكيف تصل إلى القيم، وتستخدم get()، وتضيف عناصر، وتعدلها، وتحذفها، وتستخدم أهم الدوال مثل keys() و values() و items().

{alertSuccess} القاعدة الذهبية: إذا كانت بياناتك لها أسماء واضحة مثل name و age و price، فغالبًا Dictionary هو الاختيار المناسب.

المقال المقترح التالي

بعد هذا الدرس، المقال التالي المناسب جدًا هو:

مشكلة وحل 12: حل مشكلة KeyError في بايثون

لأن خطأ KeyError مرتبط مباشرة بالقواميس، ويظهر عندما تطلب مفتاحًا غير موجود داخل Dictionary.

إرسال تعليق

أحدث أقدم