Dictionary في Python: إنشاء القاموس والوصول للقيم | أساسيات بايثون 10

Dictionary في Python هو نوع بيانات يخزن المعلومات على شكل أزواج من key وvalue. بدل أن تصل إلى العنصر برقم موضع كما يحدث غالبًا مع List، تستخدم اسم المفتاح نفسه للوصول إلى القيمة.

في هذا الدرس من أساسيات بايثون 10 ستتعلم إنشاء القاموس، معنى المفتاح والقيمة، الوصول باستخدام الأقواس وget()، إضافة وتعديل وحذف العناصر، وأهم القواعد التي يحتاجها المبتدئ قبل الانتقال إلى عمليات القواميس المتقدمة.

{alertInfo} الخلاصة السريعة: استخدم Dictionary عندما تكون بياناتك لها أسماء واضحة، مثل name وage وprice، وليس مجرد عناصر تريد الوصول إليها بأرقام index.

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

إذا كنت تتابع السلسلة بالترتيب، يمكنك مراجعة أساسيات بايثون 9، كما يمكنك الرجوع إلى أنواع البيانات في Python إذا احتجت مراجعة سريعة.

ما هو Dictionary في Python؟

القاموس أو dict عبارة عن مجموعة من أزواج مفتاح: قيمة. كل مفتاح يعرّف قيمة مرتبطة به.

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

print(student)

في المثال السابق، "name" مفتاح وقيمته "Ahmed"، و"age" مفتاح وقيمته 20.

شكل Dictionary: الأقواس المعقوفة وkey:value

الطريقة الأكثر شيوعًا لإنشاء Dictionary هي وضع أزواج key: value داخل الأقواس المعقوفة {}:

car = {
    "brand": "Toyota",
    "model": "Corolla",
    "year": 2024
}

النقطتان : تفصلان المفتاح عن قيمته، والفاصلة , تفصل بين العناصر.

إنشاء Dictionary فارغ أو باستخدام dict()

يمكنك إنشاء قاموس فارغ بطريقتين:

a = {}
b = dict()

print(a)
print(b)

ويمكن أيضًا إنشاء Dictionary باستخدام dict():

user = dict(name="Ali", age=25)
print(user)
{alertInfo} للمبتدئ، صيغة {"name": "Ali"} عادة أوضح عند قراءة الكود، لكن من المهم أن تعرف أن dict() طريقة صحيحة أيضًا.

ما القواعد الأساسية للمفاتيح Keys؟

  • يجب أن يكون كل مفتاح فريدًا داخل القاموس.
  • يمكن استخدام النصوص والأرقام وأنواع غير قابلة للتغيير مثل بعض Tuples كمفاتيح.
  • لا يمكن استخدام List كمفتاح لأنها قابلة للتعديل.
  • القيمة يمكن أن تكون من أي نوع تقريبًا: نصًا أو رقمًا أو List أو Dictionary آخر.

إذا كررت المفتاح نفسه داخل literal واحد، ستبقى القيمة الأخيرة لهذا المفتاح:

user = {
    "name": "Ali",
    "name": "Omar"
}

print(user)

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

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

النوعمثال استخدامطريقة الوصول
Listقائمة أسماء أو أسعار مرتبةitems[0]
Dictionaryبيانات مستخدم أو منتجuser["name"]

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

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

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

print(student["name"])

الناتج:

Ahmed

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

الطريقة الثانية هي get(). إذا كان المفتاح موجودًا، تعيد قيمته مثل الأقواس:

student = {
    "name": "Ahmed"
}

print(student.get("name"))

الفرق يظهر عندما لا يكون المفتاح موجودًا. الأقواس ترفع KeyError، بينما get() تعيد None افتراضيًا أو قيمة تحددها أنت.

student = {
    "name": "Ahmed"
}

print(student.get("age", "غير موجود"))
الطريقةإذا كان المفتاح موجودًاإذا لم يكن موجودًا
d[key]تعيد القيمةترفع KeyError
d.get(key)تعيد القيمةتعيد None أو default
{alertSuccess} استخدم d[key] عندما يكون غياب المفتاح خطأً يجب أن تعرف عنه، واستخدم get() عندما يكون المفتاح اختياريًا أو لديك قيمة بديلة منطقية.

إضافة مفتاح جديد وتعديل قيمة موجودة

الصيغة نفسها تستخدم للإضافة والتعديل. إذا لم يكن المفتاح موجودًا يُضاف، وإذا كان موجودًا تتغير قيمته:

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

student["city"] = "Aden"
student["age"] = 21

print(student)

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

يمكن حذف عنصر باستخدام pop():

student = {
    "name": "Ahmed",
    "city": "Aden"
}

removed = student.pop("city")
print(removed)
print(student)

ويمكن استخدام del عندما تعرف أن المفتاح موجود:

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

del student["age"]
print(student)

التحقق من وجود مفتاح باستخدام in

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

if "age" in student:
    print("المفتاح موجود")

اختبار in على Dictionary يفحص المفاتيح، وليس القيم.

keys() وvalues() وitems(): ماذا تعيد؟

هذه الدوال مهمة لفهم محتويات القاموس، لكن التكرار المتقدم عليها سنتركه لدرس العمليات المتقدم.

الدالةما الذي تعيده؟مثال
keys()View للمفاتيحstudent.keys()
values()View للقيمstudent.values()
items()View لأزواج (key, value)student.items()
student = {
    "name": "Ahmed",
    "age": 20
}

print(student.keys())
print(student.values())
print(student.items())

إذا أردت التعمق في التكرار باستخدام items()، والدمج، وupdate() وsetdefault() وDictionary Comprehension، فانتقل إلى عمليات Dictionary في Python | أساسيات بايثون 18.

هل Dictionary يحافظ على ترتيب الإدخال؟

نعم، في Python الحديثة يحافظ Dictionary على ترتيب إدخال المفاتيح. هذا يعني أن المرور على القاموس أو تحويل مفاتيحه إلى List يعيدها بترتيب إضافتها.

user = {
    "name": "Ali",
    "age": 25,
    "city": "Aden"
}

print(list(user))

مع ذلك، إذا كان هدفك الأساسي هو التعامل مع عناصر حسب مواقع رقمية مثل العنصر الأول والثاني والثالث، فـList غالبًا أنسب.

ما أنواع القيم التي يمكن تخزينها؟

يمكن أن تكون القيمة نصًا أو رقمًا أو Boolean أو List أو حتى Dictionary آخر:

student = {
    "name": "Ahmed",
    "skills": ["Python", "Git"],
    "contact": {
        "city": "Aden"
    }
}

print(student["skills"])
print(student["contact"]["city"])

هذه مجرد إشارة إلى Nested Dictionary حتى تفهم أن القيم ليست محدودة بنوع واحد؛ العمليات المتقدمة على القواميس المتداخلة مكانها درس 18.

مثال عملي: بيانات منتج

product = {
    "name": "Laptop",
    "price": 750,
    "available": True
}

print(product["name"])
print(product.get("stock", 0))

هذا المثال يوضح لماذا Dictionary مناسب للبيانات المنظمة: كل معلومة لها اسم واضح بدل الاعتماد على رقم index.

أخطاء شائعة للمبتدئين

نسيان النقطتين بين المفتاح والقيمة

student = {
    "name" "Ahmed"
}

الصحيح هو "name": "Ahmed".

استخدام [] مع مفتاح قد لا يكون موجودًا

إذا كان المفتاح اختياريًا، استخدم get() أو تحقق منه باستخدام in قبل الوصول.

استخدام List كمفتاح

المفتاح يجب أن يكون من نوع قابل للاستخدام كمفتاح ثابت؛ List قابلة للتعديل ولذلك لا تصلح كمفتاح.

أسئلة شائعة عن Dictionary في Python

ما هو Dictionary في Python؟

هو نوع بيانات يخزن العناصر على شكل أزواج key:value، وتصل إلى كل قيمة باستخدام مفتاحها بدل index رقمي.

كيف أنشئ Dictionary فارغًا؟

استخدم {} أو dict().

ما الفرق بين get() والأقواس []؟

كلتاهما تصلان إلى القيمة. الأقواس ترفع KeyError إذا لم يوجد المفتاح، بينما get() تعيد None أو قيمة افتراضية تحددها.

هل يمكن تكرار المفاتيح داخل Dictionary؟

المفاتيح يجب أن تكون فريدة منطقيًا؛ عند تعيين قيمة جديدة للمفتاح نفسه تستبدل القيمة السابقة.

هل Dictionary يحافظ على ترتيب العناصر؟

نعم، Python الحديثة تحافظ على ترتيب إدخال المفاتيح، لكن طريقة الوصول الأساسية في Dictionary تبقى بالمفتاح لا برقم index.

هل يمكن تخزين List داخل Dictionary؟

نعم. يمكن أن تكون قيمة المفتاح List أو Dictionary أخرى أو أي نوع بيانات مناسب تقريبًا.

روابط مفيدة

خلاصة الدرس

Dictionary في Python يخزن البيانات على شكل مفتاح وقيمة. للمبتدئ، ركز أولًا على إنشاء القاموس، الوصول باستخدام [] وget()، ثم الإضافة والتعديل والحذف والتحقق من وجود المفتاح.

بعد أن تتقن هذه الأساسيات، انتقل إلى درس العمليات المتقدم لتتعلم التكرار على items()، الدمج، update() وsetdefault() وDictionary Comprehension بدون تكرار شرح الأساسيات مرة أخرى.

{alertSuccess} إذا كانت بياناتك على شكل أسماء وقيم واضحة — مستخدم، منتج، إعدادات، أو استجابة API — فكر في Dictionary قبل الاعتماد على List ومواقع index.

تمرين بسيط

أنشئ Dictionary باسم book يحتوي على title وauthor وpages وavailable، ثم اطبع العنوان وعدد الصفحات، وأضف مفتاحًا جديدًا باسم language.

book = {
    "title": "Learn Python",
    "author": "Arab Python",
    "pages": 120,
    "available": True
}

book["language"] = "Arabic"

print(book["title"])
print(book["pages"])
print(book["language"])

إرسال تعليق

أحدث أقدم