ما هي القواميس في بايثون؟

هل تتساءل عن كيفية تحقيق أقصى استفادة من قواميس بايثون؟ في هذا الدليل الشامل، سنغطي كل ما تحتاج إلى معرفته لاستخدام القواميس بشكل فعال في دراستك وفي مشاريعك الواقعية.

ما هو قاموس بايثون؟

تعد قواميس بايثون نوعًا آخر من البيانات المفيدة والمهمّة جدًا. في الأساس، قواميس بايثون هي مجموعة غير مرتبة من قيم البيانات. ومع ذلك، وعلى النقيض من أنواع البيانات الأخرى، فإن عناصر القاموس عبارة عن أزواج قيمة مفتاحية بدلاً من قيم بيانات مفردة. يقوم كل من هذه الأزواج بتعيين المفتاح للقيمة المرتبطة. على سبيل المثال، في القاموس أدناه، نرسم خريطة للدول الأوروبية (المفاتيح) لعواصمها (القيم).

قاموس بايثون

مثل قوائم بايثون، قواميس بايثون:

  • قابلة للتغيير وديناميكية، مما يعني أنه يمكنك إضافة عناصرها وحذفها وتغييرها.
  • يمكن أن تكون متداخلة، مما يعني أن القاموس يمكن أن يحتوي على قاموس آخر.
قواميس بايثون المتداخلة: الدليل الكامل

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

كيفية إنشاء والوصول إلى قاموس بايثون

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

إذا كنت تقوم بإنشاء قاموس بايثون يحتوي على عناصر معينة، فستحتاج إلى وضع أزواج القيمة والمفتاح بين قوسين متعرجين. استخدم النقطتين (:) لفصل المفتاح عن القيمة المقابلة والفاصلة (،) لفصل زوج واحد عن زوج آخر ذو قيمة مفتاح.

يمكنك أيضًا استخدام دالة dict() المضمنة لإنشاء قاموس جديد. فيما يلي مثال لإنشاء قاموس بايثون:

#Creating Python dictionaries
empty = {}
game_of_thrones = {'name':'Game of Thrones', 'genre':'fantasy', 'country':'USA', 'number of seasons':8}
gdp = dict({'indicator':'Nominal GDP', 1:'USA', 2:'China', 3:'Japan'})
print(empty)
print(game_of_thrones)
print(gdp)
{}
{'name': 'Game of Thrones', 'genre': 'fantasy', 'country': 'USA', 'number of seasons': 8}
{'indicator': 'Nominal GDP', 1: 'USA', 2: 'China', 3: 'Japan'}

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

يعد الوصول إلى العناصر في قواميس بايثون أمرًا سهلاً – فقط استخدم المفتاح المرتبط.

في الأساس، هناك طريقتان للوصول إلى عنصر القاموس:

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

دعونا نرى كيف يعمل ذلك.

#Accessing elements of a dictionary with square brackets
capitals = {'Belgium':'Brussels','France':'Paris', 'Germany':'Berlin', 'Italy':'Rome', 'Poland':'Warsaw'}
print(capitals['Belgium'])
print(capitals['Portugal'])
Brussels

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
 in ()
      2 capitals = {'Belgium':'Brussels','France':'Paris', 'Germany':'Berlin', 'Italy':'Rome', 'Poland':'Warsaw'}
      3 print(capitals['Belgium'])
----> 4 print(capitals['Portugal'])

KeyError: 'Portugal
#Accessing elements of a dictionary with the (get) method
capitals = {'Belgium':'Brussels','France':'Paris', 'Germany':'Berlin', 'Italy':'Rome', 'Poland':'Warsaw'}
print(capitals.get('Belgium'))
print(capitals.get('Portugal'))
Brussels
None

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

كيفية تعديل قواميس بايثون

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

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

#Updating dictionary
game_of_thrones = {'name':'Game of Thrones', 'genre':'fantasy', 'country':'USA', 'number of seasons':7}
game_of_thrones['number of seasons'] = 8
print(game_of_thrones)
{'name': 'Game of Thrones', 'genre': 'fantasy', 'country': 'USA', 'number of seasons': 8}

لاحظ كيف قمنا بتحديث عدد المواسم في سلسلة Game of Thrones من “7” إلى “8” بمجرد تعيين قيمة جديدة للمفتاح المقابل.

في بايثون، يعد إضافة إدخالات جديدة إلى القاموس أمرًا سهلاً. تحتاج فقط إلى تحديد قيمة للمفتاح الجديد. انظر للمثال ادناه. من خلال إضافة زوج المفتاح والقيمة المقابل، نضيف المعلومات التي تفيد بأن سلسلة Game of Thrones تم إنشاؤها في الأصل باللغة الإنجليزية.

#Adding elements
game_of_thrones = {'name':'Game of Thrones', 'genre':'fantasy', 'country':'USA', 'number of seasons':8}
game_of_thrones['language'] = 'English'
print(game_of_thrones)
{'name': 'Game of Thrones', 'genre': 'fantasy', 'country': 'USA', 'number of seasons': 8, 'language': 'English'}

علاوة على ذلك، يمكنك تحديث قاموس بايثون واحد بعناصر قاموس آخر باستخدام التابع update().

#Merging dictionaries
game_of_thrones_1 = {'name':'Game of Thrones', 'genre':'fantasy', 'country':'USA', 'number of seasons':8}
game_of_thrones_2 = {'name':'Game of Thrones', 'genre':'serial drama', 'composer':'Ramin Djawadi', 'year':2011}
game_of_thrones_1.update(game_of_thrones_2)
print(game_of_thrones_1)
{'name': 'Game of Thrones', 'genre': 'serial drama', 'country': 'USA', 'number of seasons': 8, 'composer': 'Ramin Djawadi', 'year': 2011}

كما ترون من المثال، فإننا نقوم بإلحاق قاموس بايثون بآخر. ومع ذلك، لاحظ أنه إذا كان نفس زوج المفتاح والقيمة موجودًا في كلا القواميس، فلن يتم تكراره (أي الاسم – “Game of Thrones“). إذا كانت قيم نفس المفتاح مختلفة، فسيتضمن القاموس المحدث القيمة من القاموس الثاني (أي النوع – “fantasy” سيصبح – “serial drama“).

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

#Removing elements
game_of_thrones = {'name':'Game of Thrones', 'genre':'fantasy', 'country':'USA', 'number of seasons':8, 'language':'English'}
print(game_of_thrones)
del game_of_thrones['genre']
print(game_of_thrones)
{'name': 'Game of Thrones', 'country': 'USA', 'number of seasons': 8, 'language': 'English'}

إذا كنت تريد حذف القاموس بأكمله، فلديك خياران أساسيان: إما حذف جميع عناصر القاموس أو حذف القاموس نفسه. لإزالة عناصر القاموس، استخدم Clear(). و لإزالة القاموس بأكمله، استخدم الكلمة الأساسية del.

#Removing all elements
game_of_thrones = {'name':'Game of Thrones', 'genre':'fantasy', 'country':'USA', 'number of seasons':8}
game_of_thrones.clear()
print(game_of_thrones)
{}
#Deleting the entire dictionary
game_of_thrones = {'name':'Game of Thrones', 'genre':'fantasy', 'country':'USA', 'number of seasons':8}
del game_of_thrones
print(game_of_thrones)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
 in ()
      2 game_of_thrones = {'name':'Game of Thrones', 'genre':'fantasy', 'country':'USA', 'number of seasons':8}
      3 del game_of_thrones
----> 4 print(game_of_thrones)

NameError: name 'game_of_thrones' is not defined

لاحظ أنه إذا قمت بإزالة جميع عناصر القاموس، فسيظل متاحًا (ولكنه فارغ). ومع ذلك، عندما تختار حذف القاموس بأكمله باستخدام الكلمة الأساسية del، فإن هذا القاموس لن يكون موجودًا بعد الآن؛ سوف تحصل على خطأ إذا حاولت الوصول إليه.

المزيد من توابع قاموس بايثون المدمجة

أخيرًا، دعنا نستعرض بعض توابع القاموس المدمجة المفيدة في بايثون:

  • تعرض items() قائمة من الصفوف مع أزواج القيمة الرئيسية.
  • تقوم keys() بإرجاع قائمة بجميع المفاتيح الموجودة في القاموس.
  • تُرجع value()‎ قائمة بجميع القيم الموجودة في القاموس.
game_of_thrones = {'name':'Game of Thrones', 'genre':'fantasy', 'country':'USA', 'number of seasons':8}
print('Items:', list(game_of_thrones.items()))
print('Keys:',list(game_of_thrones.keys()))
print('Values:',list(game_of_thrones.values()))
Items: [('name', 'Game of Thrones'), ('genre', 'fantasy'), ('country', 'USA'), ('number of seasons', 8)]
Keys: ['name', 'genre', 'country', 'number of seasons']
Values: ['Game of Thrones', 'fantasy', 'USA', 8]

من الناحية التقنية، تقوم التوابع المذكورة أعلاه بإرجاع كائنات العرض بدلاً من القوائم. ومع ذلك، يمكنك بسهولة تحويل هذه الكائنات إلى قوائم باستخدام دالة list().

  • يقوم pop() بإزالة المفتاح من القاموس وإرجاع قيمته.
  • يزيل popitem() إما زوجًا عشوائيًا من قيمة المفتاح (في إصدارات Python قبل 3.7) أو العنصر الذي تم إدراجه آخر مرة في القاموس (في الإصدارات الأحدث) ويعيد هذا العنصر كصف.
game_of_thrones = {'name':'Game of Thrones', 'genre':'fantasy', 'country':'USA', 'number of seasons':8}
game_of_thrones.pop('country')
'USA'
game_of_thrones.popitem()
('number of seasons', 8)
print(game_of_thrones)
{'name': 'Game of Thrones', 'genre': 'fantasy'}

لاحظ كيف قمنا بإزالة زوجين من القيمة الرئيسية من قاموسنا باستخدام pop() و popitem().

  • ترجع Copy() نسخة سطحية من القاموس.
#Creating a copy of a dictionary
empty = {}
game_of_thrones = {'name':'Game of Thrones', 'genre':'fantasy', 'country':'USA', 'number of seasons':8}
copy_game_of_thrones = game_of_thrones.copy()
print('New copy;', copy_game_of_thrones)
game_of_thrones = {'name':'Game of Thrones', 'genre':'fantasy', 'country':'USA', 'number of seasons':8}

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

اكتشاف المزيد من بايثون العربي

اشترك الآن للاستمرار في القراءة والحصول على حق الوصول إلى الأرشيف الكامل.

Continue reading

Scroll to Top