القاموس عبارة عن مجموعة غير مرتبة من قيم البيانات في لغة بايثون المستخدمة لتخزين قيم البيانات مثل الخرائط. يحتفظ القاموس بأزواج القيمة الرئيسية بدلاً من الاحتفاظ بقيمة واحدة كعنصر مثل أنواع البيانات الأخرى. يجب أن يكون المفتاح المطبق في القاموس فريدًا وغير قابل للتغيير. أي أن صف Python يمكن أن يكون مفتاحًا، لكن قائمة Python لا يمكن أن تكون مفتاحًا في القاموس. يمكننا إنشاء قاموس عن طريق وضع سلسلة من العناصر داخل الأقواس المتعرجة {}، ويمكن للفاصلة '،' أن تفصل بين القيم.
مثال 1:
Dict_1 = {1: 'A', 2: 'B', 3: 'C', 4: 'D'} print ('Dictionary: ') print (Dict_1) print ('key pair 1: ', Dict_1[1]) print ('key pair 3: ', Dict_1[3])
انتاج:
Dictionary: {1: 'A', 2: 'B', 3: 'C', 4: 'D'} key pair 1: A key pair 3: C
ولكن إذا حاولنا طباعة قيمة المفتاح الخامس، فسوف نحصل على الخطأ لأنه 'ديكت_1' لا يحتوي على قيمة المفتاح الخامس.
مثال 2:
Dict_1 = {1: 'A', 2: 'B', 3: 'C', 4: 'D'} print ('Dictionary: ') print (Dict_1) print ('key pair 5: ', Dict_1[5])
انتاج:
Dictionary: {1: 'A', 2: 'B', 3: 'C', 4: 'D'} --------------------------------------------------------------------------- KeyError Traceback (most recent call last) in 2 print ('Dictionary: ') 3 print (Dict_1) ----> 4 print ('key pair 5: ', Dict_1[5]) KeyError: 5
كلما خطأ رئيسي يتم رفعه، فقد يصبح مشكلة للمستخدمين. يمكننا التغلب على هذا الخطأ باستخدام قاموس آخر لبايثون، وهو يشبه الحاوية المعروفة باسم Defaultdict . يمكن للمستخدمين العثور على هذا القاموس داخل ملف 'مجموعات' وحدة.
com.defaultdict
الافتراضي هو قاموس لغة بايثون، وهو يشبه الحاوية الموجودة داخل وحدة 'المجموعات'. إنها فئة فرعية من فئة القاموس تُستخدم لإرجاع كائن يشبه القاموس. يتمتع كل من defaultdict والقاموس بنفس الوظيفة، باستثناء أن defaultdict لا يرفع أبدًا أي خطأ في KeyError لأنه يوفر قيمة افتراضية للمفتاح، وهي غير موجودة في القاموس الذي أنشأه المستخدم.
بناء الجملة:
defaultdict(default_factory)
حدود:
مثال:
from collections import defaultdict as DD # Function for returning a default values for the # keys which are not present in the dictionary def default_value(): return 'This key is not present' # Now, we will define the dict dict_1 = DD(default_value) dict_1['ABC'] = 1 dict_1['DEF'] = 2 dict_1['GHI'] = 3 dict_1['JKL'] = 4 print ('Dictionary: ') print (dict_1) print ('key pair 1: ', dict_1['ABC']) print ('key pair 3: ', dict_1['GHI']) print ('key pair 5: ', dict_1['MNO'])
انتاج:
Dictionary: defaultdict(, {'ABC': 1, 'DEF': 2, 'GHI': 3, 'JKL': 4}) key pair 1: 1 key pair 3: 3 key pair 5: This key is not present
العمل الداخلي للتقصير
عندما نستخدم defaultdict، نحصل على متغير نسخة إضافي قابل للكتابة وطريقة واحدة بالإضافة إلى عمليات القاموس القياسية. متغير المثيل القابل للكتابة هو المعلمة default_factory و __مفتقد__ هي الطريقة.
مثال:
from collections import defaultdict as DD dict_1 = DD(lambda: 'This key is not present') dict_1['ABC'] = 1 dict_1['DEF'] = 2 dict_1['GHI'] = 3 dict_1['JKL'] = 4 print ('Dictionary: ') print (dict_1) print ('key value 1: ', dict_1['ABC']) print ('key value 3: ', dict_1['GHI']) print ('key value 5: ', dict_1['MNO'])
انتاج:
Dictionary: defaultdict(<function at 0x0000019efc4b58b0>, {'ABC': 1, 'DEF': 2, 'GHI': 3, 'JKL': 4}) key value 1: 1 key value 3: 3 key value 5: This key is not present </function>
مثال:
from collections import defaultdict as DD dict_1 = DD(lambda: 'This key is not present') dict_1['ABC'] = 1 dict_1['DEF'] = 2 dict_1['GHI'] = 3 dict_1['JKL'] = 4 print ('Dictionary: ') print (dict_1) print ('key value 1: ', dict_1.__missing__('ABC')) print ('key value 4: ', dict_1['JKL']) print ('key value 5: ', dict_1.__missing__('MNO'))
انتاج:
Dictionary: defaultdict(<function at 0x0000019efc4b5670>, {'ABC': 1, 'DEF': 2, 'GHI': 3, 'JKL': 4}) key value 1: This key is not present key value 4: 4 key value 5: This key is not present </function>
كيفية استخدام 'القائمة' كـ default_factory
يمكننا تمرير فئة القائمة كوسيطة default_factory، وسوف تقوم بإنشاء الافتراضي مع القيم التي تم تعيينها في تنسيق القائمة.
مثال:
from collections import defaultdict as DD # Defining a dictionary dict_1 = DD(list) for k in range(7, 12): dict_1[k].append(k) print ('Dictionary with values as list:') print (dict_1)
انتاج:
Dictionary with values as list: defaultdict(, {7: [7], 8: [8], 9: [9], 10: [10], 11: [11]})
كيفية استخدام 'int' كـ default_factory
يمكننا تمرير فئة int كوسيطة default_factory، وسوف تقوم بإنشاء الافتراضي مع تعيين القيمة الافتراضية على صفر.
مثال:
from collections import defaultdict as DD # Defining the dict dict_1 = DD(int) J = [1, 2, 3, 4, 2, 4, 1, 2] # Now, we will iterate through the list 'J' # for keeping the count for k in J: # As, The default value is 0 # so we do not need to # enter the key first dict_1[k] += 1 print(dict_1)
انتاج:
defaultdict(, {1: 2, 2: 3, 3: 1, 4: 2})
خاتمة
في هذا البرنامج التعليمي، ناقشنا الإفتراضية في بايثون وكيف يمكننا إجراء عمليات مختلفة على الإفتراضية باستخدام المعلمة default_factory.