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

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

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

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

هذا يجعل القواميس مفيدة جدًا عندما تتعامل مع بيانات لها خصائص واضحة، مثل بيانات طالب، مستخدم، منتج، إعدادات برنامج، أو نتيجة إحصائية.

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

{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"
}

أما إذا كتبت نفس البيانات داخل قائمة، فستحتاج إلى تذكر أن الاسم في الفهرس 0، والعمر في الفهرس 1، والمدينة في الفهرس 2:

student = ["Sara", 19, "Amman"]

القائمة ليست خطأ، لكنها أقل وضوحًا هنا، خصوصًا عندما تكبر البيانات ويزيد عدد العناصر.

{alertSuccess} استخدم Dictionary عندما تريد تخزين بيانات لها أسماء واضحة مثل: name، age، city، price، status.

طريقة إنشاء 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

ولو أردت طباعة المفتاح والقيمة معًا، استخدم items():

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. طلب مفتاح غير موجود

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

خطأ:

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 من أهم أنواع البيانات في بايثون، وتستخدم لتخزين البيانات على شكل مفتاح وقيمة. بدل الوصول إلى العناصر برقم الفهرس كما في القائمة، نصل إلى القيم باستخدام مفاتيح واضحة مثل "name" أو "age".

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

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

إرسال تعليق

أحدث أقدم