logo

__dict__ في بايثون

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

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

ما هو _dict_ ؟

كل وحدة لها خاصية فريدة تسمى __قاموس__. هذا القاموس يحتوي على جدول الرموز للوحدة . يتم تخزين الخصائص (القابلة للكتابة) لعنصر ما في القاموس أو كائن التعيين الآخر.

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

بناء الجملة :

 object.__dict__ 

مثال :

 class AnimalClass: def __init__(self,identity,age): self.identity = identity self.age = age def feature(self): if self.age == '10': return True else: return False ac = AnimalClass('Lion','10') print(ac.__dict__) 

انتاج:

 {'identity': 'Lion', 'age': '10'} 

مثال 2 :

سيوضح هذا المثال ذلك عن طريق __dict__ السمة ، يمكن إنشاء قاموس من أي كائن:

 # class Flowers is defined class Flowers: # constructor def __init__(self): # keys are being initialized with # their corresponding values self.Rose = 'red' self.Lily = 'white' self.Lotus = 'pink' def displayit(self): print('The Dictionary from object fields belongs to the class Flowers :') # object animal of class Animals flower = Flowers() # calling displayit function flower.displayit() # calling the attribute __dict__ on flower # object and making it print it print(flower.__dict__) 

انتاج:

 The Dictionary from object fields belongs to the class Flowers : {'Rose': 'red', 'Lily': 'white', 'Lotus': 'pink'} 

مثال 3 :

 def funct(): pass funct.practice = 1 print(funct.__dict__) class PracticeClass: x = 1 def practice_function(self): pass print(PracticeClass.__dict__) 

انتاج:

 {'practice': 1} {'__module__': '__main__', 'x': 1, 'practice_function': , '__dict__': , '__weakref__': , '__doc__': None} 

استخدام القاموس دون استخدام __dict__ في بايثون:

إنشاء قاموس :

في بايثون، يمكن إنشاء قاموس من خلال تضمين ملف قائمة الإدخالات داخل الأقواس المتعرجة والفصل بينها بفاصلة . يقوم القاموس بتخزين أزواج من القيم، حيث يكون عنصر الزوج هو المفتاح والآخر هو المفتاح المفتاح: القيمة . أضع ثقتي في مفاتيح, أيّ لا يمكن تكرارها ويجب أن تكون غير قابلة للتغيير في القواميس يمكن أن تكون من أي نوع من البيانات ويمكن تكرارها .

العناصر هي مفصولة بفواصل ، فكل مفتاح يتميز بقيمته بنقطتين (:)، والهيكل بأكمله موجود في بين قوسين مجعد . يتم كتابة القاموس الخالي تماماً من جميع الكلمات على النحو التالي: {} .

يجب أن تكون مفاتيح القاموس غير قابل للتغيير ، مثل الأعداد الصحيحة، الصفوف، أو السلاسل ، على الرغم من أن القيم يمكن أن تكون من أي نوع. في قواميس بايثون، يتم اعتبار نفس اسم المفتاح مكتوبًا بشكل مختلف مفتاح مميز. يرجى ملاحظة ذلك مفاتيح القاموس حساسة لحالة الأحرف ; سيتم التعامل مع المفاتيح ذات الاسم المشابه ولكن حالة الأحرف المميزة بشكل مختلف.

مثال :

 # Creating a Dictionary # using Integer Keys only Dict = {1: 'JAVA', 2: 'T', 3: 'POINT'} print('
Creating a Dictionary by using Integer Keys : ') print(Dict) # Creating a Dictionary # using various Mixed keys Dict = {'Company': 'JavaTpoint', 7: [22, 35, 46, 97]} print('
Creating a Dictionary by using Mixed Keys : ') print(Dict) 

انتاج:

 Creating a Dictionary by using Integer Keys : {1: 'JAVA', 2: 'T', 3: 'POINT'} Creating a Dictionary by using Mixed Keys : {'Company': 'JavaTpoint', 7: [22, 35, 46, 97]} 

ال طريقة مدمجة dict() كما يسمح ل إنشاء القواميس . ببساطة قوسين متعرجين {} معا سوف يؤدي إلى قاموس فارغ .

مثال :

 # Creating an empty Dictionary myDict = {} print('This is an Empty Dictionary: ') print(myDict) # Creating a Dictionary # using the dict() method myDict = dict({1: 'JAVA', 2: 'T', 3: 'POINT'}) print('
Creating a Dictionary by using the dict() method : ') print(myDict) # Creating a Dictionary # using each item as a different Pair myDict = dict([(1, 'JavaTpoint'), (2, 'Great')]) print('
Creating a Dictionary by using each item as a different pair : ') print(myDict) 

انتاج:

 This is an Empty Dictionary: {} Creating a Dictionary by using the dict() method : {1: 'JAVA', 2: 'T', 3: 'POINT'} Creating a Dictionary by using each item as a different pair : {1: 'JavaTpoint', 2: 'Great'} 

التعقيدات لإنشاء قاموس:

  • التعقيد الزمني : يا (الطول (ديكت))
  • تعقيد الفضاء : على)

القواميس المتداخلة:

وهو شكل من أشكال القاموس حيث يوجد واحد أو أكثر تحتوي المفاتيح على قاموس مرفق بها كقيمة من المفتاح.

مثال :

 # Creating a Nested Dictionary # as mentioned above using a dictionary as a value to a key in # a dictionary myDict = dict({1: 'JAVA', 2: 'T', 3: 'POINT', 4: {1: 'JavaTpoint', 2: 'Great'}}) print('
Creating a Nested Dictionary : ') print(myDict) 

انتاج:

 Creating a Nested Dictionary : {1: 'JAVA', 2: 'T', 3: 'POINT', 4: {1: 'JavaTpoint', 2: 'Great'}} 

إضافة عناصر إلى القاموس:

هناك عدة طرق لإضافة العناصر إلى قاموس بايثون. من خلال تحديد القيمة والمفتاح معًا، على سبيل المثال، ديكت [مفتاح] = 'القيمة'، يمكن إضافة قيمة واحدة إلى القاموس في كل مرة. باستخدام وظيفة التحديث () المضمنة ، يمكن للمرء تعديل قيمة موجودة في القاموس. يمكن أيضًا توسيع القاموس الحالي باستخدام القيم الرئيسية المتداخلة .

ملاحظة: عند إضافة قيمة، يتم تحديث القيمة إذا كانت مجموعة المفتاح والقيمة موجودة بالفعل. إذا لم يكن الأمر كذلك، فسيتم إضافة مفتاح وقيمة جديدين إلى القاموس.

مثال :

 # Creating Empty Dictionary myDict = {} print('Empty Dictionary: ') print(myDict) # Adding elements only one at a time myDict[0] = 'Java' myDict[3] = 'T' myDict[6] = 41 print('
Dictionary after the addition of 3 elements: ') print(myDict) # Adding a set of values # to a particular Key myDict['settingValues'] = 7, 8, 9 print('
Dictionary after the adding a set of values to a key : ') print(myDict) # Updating the existing Key's Value myDict[3] = 'tPoint' print('
Dictionary after Updated key value: ') print(myDict) # Adding Nested Key value to Dictionary myDict[8] = {'Nested' :{'A' : 'boy', 'B' : 'Girl'}} print('
Dictionary after Addition of a Nested Key: ') print(myDict) 

انتاج:

 Empty Dictionary: {} Dictionary after the addition of 3 elements: {0: 'Java', 3: 'T', 6: 41} Dictionary after the adding a set of values to a key : {0: 'Java', 3: 'T', 6: 41, 'settingValues': (7, 8, 9)} Dictionary after Updated key value: {0: 'Java', 3: 'tPoint', 6: 41, 'settingValues': (7, 8, 9)} Dictionary after Addition of a Nested Key: {0: 'Java', 3: 'tPoint', 6: 41, 'settingValues': (7, 8, 9), 8: {'Nested': {'A': 'boy', 'B': 'Girl'}}} 

تعقيدات إضافة عناصر إلى القاموس:

  • تعقيد الوقت : يا (1) / يا (ن)
  • تعقيد الفضاء : يا(1)

الوصول إلى عناصر القاموس:

يوظف القاموس مفاتيح بينما تتطلب أنواع البيانات الأخرى فهرسة لاسترداد القيم. يمكن استخدام المفاتيح مع الحصول على وظيفة (). أو داخل قوسين مربعين [].

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

مثال :

 # Python program to demonstrate the # accessing of an element, from a Dictionary # Creating a Dictionary myDict = {1: 'Java', 'name': 'T', 2: 'Point', 4: 'Website'} # accessing an element using key print('Accessing an element using the key:') print(myDict['name']) print('Accessing another element using the key:') print(myDict[4]) # accessing an element using the get() method print('Accessing an using the get() method:') print(myDict.get(2)) print('Accessing another using the get() method:') print(myDict.get(1)) 

انتاج:

 Accessing an element using the key: T Accessing another element using the key: Website Accessing an using the get() method: Point Accessing another using the get() method: Java 

تعقيدات الوصول إلى العناصر في القاموس:

  • تعقيد الوقت : يا(1)
  • تعقيد الفضاء : يا(1)

الوصول إلى عنصر القاموس المتداخل:

يمكننا أن نأخذ المساعدة من تقنية الفهرسة [] للحصول على قيمة المفتاح الموجود في ملف قاموس متداخل .

مرحبا بالعالم جافا

مثال :

 # Creating a Dictionary myDict = {'myDict1': {3: 'JavatPoint'}, 'myDict2': {'Info.': 'Website'}} # Accessing the elements using the key print(myDict['myDict1']) print(myDict['myDict1'][3]) print(myDict['myDict2']['Info.']) 

انتاج:

 {3: 'JavatPoint'} JavatPoint Website 

طرق القاموس المضمنة:

واضح() :

الدالة dict.clear() يلغي كل زوج من القيمة الرئيسية من القاموس.

ينسخ() :

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

من المفاتيح () :

باستخدام التكرار المرفق (سلسلة أو قائمة أو مجموعة أو صف) كمفاتيح والقيمة المحددة، الدالة dict.fromkeys() يقوم بإنشاء قاموس جديد .

يحصل() :

هذا يعطي القيمة المرتبطة مع المفتاح المحدد.

أغراض() :

أ كائن عرض القاموس ، الذي يقدم عرضًا ديناميكيًا لعناصر القاموس كقائمة بأزواج القيمة الرئيسية يتم إرجاع بواسطة الدالة dict.items(). عندما يتم تحديث القاموس، هذا يتم أيضًا تحديث كائن العرض .

dict.keys() :

الدالة dict.keys() إرجاع كائن عرض القاموس مع القاموس قائمة المفاتيح.

البوب ​​() :

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

يشرب() :

هذا يزيل عنصرًا واحدًا من القاموس ويعيد صفًا من أزواج (المفتاح، القيمة). ال آخر ما يدخل أولاً يخرج (LIFO) يتم استخدام التسلسل لإرجاع الأزواج.

الوضع الإفتراضي() :

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

قيم() :

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

تحديث() :

أ القاموس أو أي شيء قابل للتكرار مع أزواج القيمة الرئيسية ، مثل الصفوف، يمكن تحديثها باستخدام الدالة dict.update() .

مثال :

 # Example to demonstrate all dictionary methods #Creating a Dictionary mydict1={1:'HTML',2:'CSS',3:'Javascript',4:'Python'} #copy method mydict2=mydict1.copy() print(mydict2) #clear method mydict1.clear() print(mydict1) #get method print(mydict2.get(1)) #items method print(mydict2.items()) #keys method print(mydict2.keys()) #pop method mydict2.pop(4) print(mydict2) #popitem method mydict2.popitem() print(mydict2) #update method mydict2.update({2:'C++'}) print(mydict2) #values method print(mydict2.values()) 

انتاج:

 {1: 'HTML', 2: 'CSS', 3: 'Javascript', 4: 'Python'} {} HTML dict_items([(1, 'HTML'), (2, 'CSS'), (3, 'Javascript'), (4, 'Python')]) dict_keys([1, 2, 3, 4]) {1: 'HTML', 2: 'CSS', 3: 'Javascript'} {1: 'HTML', 2: 'CSS'} {1: 'HTML', 2: 'C++'} dict_values(['HTML', 'C++']) 

الفرق بين القاموس والقائمة:

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

أ القائمة تحتوي العناصر على الميزات التالية:

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

خصائص قاموس العناصر هي كما يلي:

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

الاستخدام :

نحن نستخدم قاموس إذا كان لدينا مجموعة من المفاتيح المميزة التي تتوافق مع القيم ، ولكن أ قائمة عندما يكون لدينا مجموعة مرتبة من الأشياء .

خاتمة :

  • في لغة الكمبيوتر، القواميس هي نوع من بنية البيانات المستخدمة للاحتفاظ بالمعلومات وهذا مرتبط بطريقة أو بأخرى.
  • كل وحدة لها خاصية فريدة تسمى __قاموس__.
  • __قاموس__ يحتوي على جدول الرموز للوحدة .
  • يتم تخزين خصائص العنصر في كائن رسم الخرائط.
  • كل كائن في بايثون لديه الخاصية المشار إليها بالرمز __dict__ .
  • اسم آخر لـ __dict__ يُعرف أيضًا باسم كائن تعيين الوكيل.
  • يتم استدعاء المكونين من قاموس بايثون المفاتيح والقيم .
  • أنت قد لا تتلقى قم بإعادة بياناتك بالترتيب المماثل الذي أدخلته بها لأن القواميس لا تحتفظ ببياناتها بأي ترتيب محدد.
  • سوف تتكون المفاتيح من فقط شئ واحد.
  • يمكن أن تكون القيم الأعداد الصحيحة والقوائم والقوائم داخل القوائم ، إلخ.
  • لا يمكن أن يكون هناك أكثر من إدخال واحد لكل مفتاح (لا يسمح بتكرار المفتاح)
  • يجب أن تكون مفاتيح القاموس غير قابل للتغيير ، مثل الأعداد الصحيحة، الصفوف، أو السلاسل ، على الرغم من أن القيم يمكن أن تكون من أي نوع.
  • قاموس المفاتيح حساسة لحالة الأحرف ; في قواميس بايثون، يعتبر نفس اسم المفتاح مكتوبًا بشكل مختلف بمثابة مفتاح مميز .