10 طرق مفيدة لقاموس بايثون

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

سنبدأ بمراجعة أساسيات قواميس Python ثم إنشاء مثال على القاموس وتعديله باستخدام طرق قاموس Python.

هيا بنا نبدأ…

نظرة عامة على قواميس بايثون

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

يجب أن تكون المفاتيح الموجودة في القاموس فريدة (بحيث يمكن تجزئتها). يمكنك استخدام المفتاح للبحث عن القيمة أو استخدام طرق مضمنة (ستتعلمها قريبًا).

عند إنشاء قاموس Python ، يمكنك تهيئة جميع أزواج المفتاح والقيمة أو تهيئة قاموس فارغ ثم إضافة أزواج المفتاح والقيمة.

>>> dict1 = {'language':'Python','like':True}
>>> type(dict1)
<class 'dict'>

# or we can do the following:

>>> dict1 = {}
>>> dict1['language']='Python'
>>> dict1['like']=True

طرق قاموس بايثون للعمليات المشتركة

ملاحظة: لمتابعة أمثلة التعليمات البرمجية ، يجب أن يكون لديك Python 3.7 أو إصدار أحدث مثبتًا.

يمكنك كتابة التعليمات البرمجية في Python REPL. أو تابع محرر Python عبر الإنترنت في admingate.org.

>>> person = {'name':'Alice',
...           'city':'Portland',
...           'interest':'Programming',
...           'profession':'Developer'
...           }

الآن بعد أن قمنا بتهيئة قاموس Python ، فلنبدأ في استعراض طرق القاموس المختلفة.

الحصول على مفاتيح القاموس باستخدام المفاتيح ()

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

>>> person.keys()
dict_keys(['name', 'city', 'interest', 'profession'])

الحصول على قيم القاموس بالقيم ()

ترجع طريقة القيم () جميع القيم وتكون مفيدة عندما تريد معالجة هذه القيم بشكل أكبر.

دعنا نصل إلى جميع القيم الموجودة في قاموس الأشخاص:

>>> person.values()
dict_values(['Alice', 'Portland', 'Programming', 'Developer'])

الحصول على أزواج من مفتاح القيمة مع العناصر ()

ترجع طريقة العناصر () قائمة مجموعات قيم المفاتيح. لذلك ، يؤدي استدعاء هذه الطريقة في قاموس الشخص إلى إرجاع قائمة من مجموعات القيمة الرئيسية:

>>> person.items()
dict_items([('name', 'Alice'), ('city', 'Portland'), ('interest', 'Programming'), 
           ('profession', 'Developer')])

الحصول على نسخة ضحلة مع نسخة ()

تقوم طريقة copy () بإرجاع نسخة ضحلة من قاموس Python.

>>> person_cpy = person.copy()

هنا ، person_cpy هو نسخة ضحلة من قاموس الأشخاص. دعونا نعدل هذه النسخة بتحديث مفتاح “الاسم” إلى “بوب”.

>>> person_cpy['name'] = 'Bob'
>>> person_cpy

الآن إذا قمت بفحص محتويات القاموس ، يمكنك أن ترى أنه تم تحديث “الاسم” إلى “بوب”.

{
 'name': 'Bob', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer'
}

ومع ذلك ، لم يتم تعديل قاموس الشخص الأصلي.

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer'
}

تعيين القيم الافتراضية باستخدام setdefault ()

عند العمل مع قواميس Python ، من الشائع تشغيل استثناء KeyError إذا لم يكن المفتاح موجودًا في القاموس. إليك مثال عندما نحاول الوصول إلى مفتاح “العمر”:

>>> person['age']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'age'

يمكنك تجنب مثل هذه الأخطاء باستخدام الأساليب المضمنة setdefault () و get () بدلاً من الوصول إلى القيمة على النحو الوارد أعلاه.

  يعد تنظيم المحتوى أمرًا سهلاً باستخدام هذه الأدوات الرائعة السبعة للاستخدام الشخصي والتجاري

طريقة setdefault (مفتاح) ترجع ديكت[‘key’] إذا كان المفتاح موجودًا في الإختصار.

>>> person.setdefault('name')
'Alice'

في حالة عدم وجود المفتاح ، فإنه يضيف المفتاح إلى القاموس بالقيمة الافتراضية بلا.

>>> person.setdefault('address')
>>> person

هنا ، مفتاح “العنوان” غير موجود في قاموس الأشخاص. لكننا نرى أنه تمت إضافته بالقيمة الافتراضية بلا.

{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': None 
}

يمكننا الآن تعيين مفتاح “العنوان” لبعض العناوين:

>>> person['address'] = "10, xyz street"
>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street' 
}

يمكنك أيضًا تحديد القيمة في استدعاء الطريقة ، كما هو موضح:

>>> person.setdefault('country','USA')
'USA'
>>> person

نظرًا لأن مفتاح “البلد” غير موجود في الأصل في قاموس الأشخاص ، نرى أنه تمت إضافته مع “USA” كقيمة.

{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA'
}

احصل على قيمة محددة مع get ()

طريقة get () ترجع القيمة المقابلة للمفتاح. كما يأخذ بشكل اختياري قيمة افتراضية أخرى يتم إرجاعها إذا لم يتم العثور على المفتاح في القاموس.

عندما نحاول الوصول إلى قيمة مفتاح “الاسم” ، نحصل على “أليس” لأن المفتاح موجود شخصيًا:

>>> person.get('name')
'Alice'

لا يحتوي قاموس الشخص على مفتاح “gpa”. لذلك عندما نحاول الحصول على قيمتها ، لا نحصل على شيء في Python REPL. ومع ذلك ، إذا قمت بطباعة القيمة ، فستحصل على لا شيء.

>>> person.get('gpa')
>>> print(person.get('gpa'))
None

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

>>> person.get('gpa','not found')
'not found'

ومع ذلك ، فإن طريقة get () لا تضيف مفتاح “gpa” إلى القاموس.

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA'
}

فهم setdefault () مقابل get ()

على الرغم من أنه يمكن استخدام كل من التابعين setdefault () و get () للتعامل مع KeyError ، فلنلخص الاختلافات عما تعلمناه:

  • يضيف dict.setdefault (مفتاح ، val) المفتاح مع val كقيمة افتراضية. إذا لم يتم توفير val ، فسيتم إضافة المفتاح بالقيمة الافتراضية بلا.
  • يعرضict.get (مفتاح ، فال) القيمة المقابلة للمفتاح من قاموس بايثون. إذا لم يكن المفتاح موجودًا ، فإنه يقوم بإرجاع val (إذا تم توفيره) أو لا شيء — ولكنه لا يضيف المفتاح إلى القاموس.
  كيفية البحث عن رسائل محددة على Slack

يمكنك أيضًا استخدام الضبط الافتراضي في Python للتعامل مع KeyErrors بشكل أفضل.

تحديث محتويات القاموس بالتحديث ()

يمكنك تحديث قاموس Python الحالي باستخدام أزواج المفتاح والقيمة من قاموس آخر. يمكنك أيضًا التحديث بمحتويات أي لغة Python قابلة للتكرار باستخدام طريقة update ().

دعنا نحدد قاموس more_details. نقوم بعد ذلك بتحديث قاموس الشخص بمحتويات من قاموس more_details:

>>> more_details = {'hobby':'singing', 'likes':'sweets'}
>>> person.update(more_details)

من الإخراج أدناه ، نرى أنه تمت إضافة مفتاحي “الهوايات” و “الإعجابات” إلى قاموس الأشخاص.

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA', 
 'hobby': 'singing', 
 'likes': 'sweets'
}

إزالة العنصر الأخير المضاف مع popitem ()

يمكن استخدام طريقة قاموس popitem () لإزالة آخر زوج من قيم المفاتيح المضافة.

>>> person.popitem()
('likes', 'sweets')

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

كما أنه يزيل زوج المفتاح ذي القيمة. يمكنك تأكيد ذلك من خلال فحص محتويات القاموس:

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA', 
 'hobby': 'singing'
}

إزالة عنصر قاموس باستخدام pop ()

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

للقيام بذلك ، يمكننا استخدام طريقة قاموس Python pop (): باستخدام .pop (مفتاح) في القاموس يُرجع القيمة المقابلة للمفتاح ويزيل أيضًا زوج المفتاح والقيمة من القاموس.

هذا مثال:

>>> person.pop('hobby')
'singing'

عندما أظهرنا العنصر المطابق لـ “الهواية” الرئيسية ، نرى أنه لم يعد موجودًا في القاموس.

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA'
}

إذا مررنا مفتاحًا غير موجود ، فإننا نواجه استثناء KeyError ، كما هو موضح:

>>> person.pop('age')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'age'

هنا ، نواجه استثناء KeyError لأن مفتاح “العمر” غير موجود في قاموس الأشخاص.

  إجبار متصفحك على استخدام Google.com وتجاهل موقعك

بخلاف طريقة list pop () التي تزيل العنصر الأخير افتراضيًا ، تتطلب طريقة Dictionary pop () مفتاحًا. إذا لم تحدد مفتاحًا في الطريقة ، فسنواجه أخطاء.

>>> person.pop()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: pop expected at least 1 argument, got 0

حذف كافة عناصر القاموس مع مسح ()

تزيل أساليب القاموس pop () و popitem () زوجًا واحدًا من قيم المفاتيح في كل مرة. إذا كنت تريد حذف جميع العناصر الموجودة في القاموس ، فيمكنك استخدام طريقة clear ().

>>> person.clear()
>>> person
{}

كما رأينا ، فإن استدعاء طريقة clear () في قاموس الأشخاص يزيل جميع أزواج المفتاح والقيمة وأصبح قاموس الشخص فارغًا الآن.

ملخص طرق قاموس بايثون

فيما يلي مراجعة سريعة لأساليب قاموس Python التي تعلمناها.

MethodSyntaxDescriptionkeys () إرجاع نسخة ضحلة من dt1setdefault ()
– إرجاع Dict1[key] إذا كان المفتاح هو Presentget ()[key] إذا كان المفتاح موجودًا فيict1 ؛ عدا ذلك ، تُرجع القيمة الافتراضية
– إذا لم يكن المفتاح موجودًا في dict1 ولم يتم تحديد default_value ، فسيتم إرجاع Noneupdate () dict1pop ()ict1.pop (مفتاح) – يزيل ويعيد القيمة المقابلة للمفتاح:[key]
– يرفع خطأ KeyError إذا كان المفتاح غير موجود في

خاتمة

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

بعد ذلك ، تحقق من قائمة طرق قائمة Python المفيدة. ترميز سعيد!