logo

__dict__ у Python

У Python словник – це невпорядкований набір значень даних це може бути використовується для зберігання значень даних подібно до карти. На відміну від інших типів даних, які можуть містити лише одне значення на елемент, словники також можуть містити a ключ:значення пара. Скласти словник більш ефективний , пропонується ключ-значення.

Коли це стосується доступу до атрибутів, крапка '.' (а саме x.any_attribute ) це все, з чим знайома більшість користувачів. Простіше кажучи, доступ до атрибутів — це процес отримання об’єкта, який пов’язаний з уже наявним у вас об’єктом . Це може здатися дуже простим для тих, хто використовує Python, не заглиблюючись у деталі. Однак багато чого відбувається за лаштунками цього відносно простого процесу.

Що таке _dict_?

Кожен модуль має унікальну властивість під назвою __dict__. Цей словник містить таблицю символів для модуля . Характеристики (придатні для запису) елемента зберігаються в словнику або іншому об’єкті відображення.

Простіше кажучи, кожен об’єкт у Python має властивість, яка позначена символом __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__ у Python:

Створення словника:

У Python словник можна створити, включивши a список записів у фігурних дужках і розділяючи їх комою . Словник зберігає пари значень, де один елемент пари є ключем, а інший - його Ключ: значення . На відміну від ключі, котрий не можуть повторюватися і повинні бути незмінними, цінності у словниках може мати будь-який тип даних і може дублюватися .

Елементи є відокремлюються комами , кожен ключ відрізняється від свого значення через двокрапку (:), і вся структура міститься в фігурні дужки . Словник, повністю позбавлений усіх слів, написаний так: {} .

рік був винайдений комп’ютер

Ключі словника повинні бути незмінний , як от цілі числа, кортежі або рядки , хоча значення можуть бути будь-якого типу. У словниках Python одна і та сама назва ключа, написана по-різному, вважається окремий ключ. Зверніть увагу, що ключі словника чутливі до регістру ; ключі з подібною назвою, але з різним регістром оброблятимуться по-різному.

приклад:

 # 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]} 

The вбудований метод dict() також дозволяє створення словників . Простіше кажучи дві фігурні дужки {} разом призведе до an порожній словник .

приклад:

 # 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'} 

Складнощі створення словника:

  • Часова складність: O(довжина(дикт))
  • Космічна складність: O(n)

Вкладені словники:

Це форма словника, де один або декілька keys має словник, доданий до нього як значення ключа.

приклад:

 # 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'}} 

Додавання елементів до словника:

Є кілька способів додавання елементів до словника Python. Вказуючи значення та ключ разом, наприклад, Dict[Ключ] = 'Значення', одне значення може бути додано до словника одночасно. Використовуючи вбудована функція update(). , можна змінити існуюче значення в словнику. Існуючий словник також можна розширити за допомогою вкладені ключові значення .

Примітка. Під час додавання значення значення оновлюється, якщо комбінація ключ-значення вже існує. Якщо ні, до словника додається новий ключ і значення.

приклад:

 # 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'}}} 

Складнощі додавання елементів до словника:

  • Часова складність: O(1)/O(n)
  • Космічна складність: О(1)

Доступ до елементів словника:

Використовується словник ключі , тоді як інші типи даних вимагають індексування для отримання значень. Ключі можна використовувати з функція get(). або у квадратних дужках [].

У випадку, якщо a ключ не знайдено у словнику, Виробляється 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 

Складнощі для доступу до елементів у словнику:

  • Часова складність: O(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 

Методи вбудованого словника:

clear() :

Функція dict.clear() усуває кожну пару ключ-значення зі словника.

копіювати():

А менша копія словника повертається методом dict.copy().

fromkeys():

Використовуючи наданий iterable (рядок, список, набір або кортеж) як ключі та вказане значення, функція dict.fromkeys() створює новий словник .

отримати():

Це дає асоційоване значення з наданим ключем.

предмети():

А об'єкт перегляду словника , який пропонує динамічне представлення елементів словника у вигляді списку пар ключ-значення повертається за допомогою функції dict.items(). Коли словник оновлюється, це об'єкт перегляду також оновлено .

dict.keys() :

Функція dict.keys() повертає об’єкт перегляду словника зі словником список ключів.

pop() :

Це повертає значення ключа після його видалення . Якщо в словнику відсутній ключ, він або видає a KeyError або повертає значення за замовчуванням якщо такий був наданий.

пити():

Це видаляє один елемент зі словника та повертає кортеж пар (ключ, значення). The Останній прийшов, перший вийшов (LIFO) послідовність використовується для повернення пар.

mvc у рамках Spring

встановити за замовчуванням() :

Це повертає значення словника для заданого ключа . Якщо ключ неможливо знайти, використовуйте ключ із комплектом значення за замовчуванням додається. Це встановлює жодного як значення за замовчуванням якщо він не надається.

значення():

The об’єкт перегляду словника, який пропонує динамічний перегляд кожного значення, яке є присутній у словнику, повертається за допомогою функції 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++']) 

Розрізнення між словником і списком:

Структури даних, такі як a список і словник принципово не схожі. Ан замовлена ​​серія предметів можна зберігати в a список щоб ми могли індексувати його або повторювати його. Списки також можна змінювати навіть після того, як вони вже були згенеровані, оскільки вони змінного типу. The Словник Python це зберігання ключ-значення і реалізація a хеш-таблиця . Він не дотримується певної послідовності та вимагає хешованих ключів. Крім того, він швидкий для пошуку ключів.

А списки елементи містять такі функції:

  • Якщо спеціально не змінити порядок, вони зберегти поточний порядок (наприклад, шляхом сортування списку).
  • Вони можуть бути будь-якого типу або навіть поєднання сортів .
  • Через числові (від нуля) індекси, ми можемо отримати до них доступ.

Характеристики словник елементи наступні:

  • Кожен запис має a значення та ключ .
  • Замовлення є не гарантується .
  • Ключові цінностівикористовуються для доступу до елементів.Будь-який тип хеш-таблиці (окрім dict)можна використовувати для ключових значень, а типи можна комбінувати.Будь-яка вартість, включаючи інші диктати, дозволено , а типи можна комбінувати.

Використання:

Ми використовуємо a словник якщо ми маємо a набір окремих ключів, які відповідають значенням , але а список коли у нас є замовлена ​​група речей .

Висновок:

  • Комп'ютерною мовою, словники — це свого роду структури даних, які використовуються для зберігання інформації це якось пов'язано.
  • Кожен модуль має унікальну властивість під назвою __dict__.
  • __dict__ містить таблицю символів для модуля .
  • Властивості елемента зберігаються в a об'єкт відображення.
  • Кожен об’єкт у Python має властивість, яка позначена символом __dict__ .
  • Інша назва __dict__ також відома як mappingproxy об'єкт.
  • Два компоненти словника Python називаються Ключі та значення .
  • ви може не отримати ваші дані повертаються в такому ж порядку, як ви їх вводите, оскільки словники не зберігають свої дані в якомусь конкретному порядку.
  • Ключі будуть складатися тільки з одна річ.
  • Цінності можуть бути цілі числа, списки, списки всередині списків і т.д.
  • Не може бути більше ніж один запис на ключ (дублікати ключа не допускаються)
  • Ключі словника повинні бути незмінний , як от цілі числа, кортежі або рядки , хоча значення можуть бути будь-якого типу.
  • Словник клавіші чутливі до регістру ; у словниках Python одна і та сама назва ключа, написана по-різному, вважається a окремий ключ .