logo

Python'da __dict__

Python'da bir sözlük bir sırasız veri değerleri kümesi olabilirdi veri değerlerini depolamak için kullanılır bir haritaya benzer şekilde. Öğe başına yalnızca tek bir değer içerebilen diğer veri türlerinin aksine, sözlükler aynı zamanda bir öğe de içerebilir. anahtar:değer çift. Sözlük yapmak için daha verimli , Anahtar-Değer sunulmaktadır.

Shilpa Shetty'nin yaşı

Öznitelik erişimi söz konusu olduğunda nokta '.' (de olduğu gibi x.any_attribute ) kullanıcıların çoğunluğunun aşina olduğu tek şeydir. Basitçe söylenmiş, nitelik erişimi, halihazırda sahip olduğunuz bir nesneye bağlı bir nesneyi elde etme işlemidir . Ayrıntılara çok fazla girmeden Python kullanan biri için çok basit görünebilir. Ancak bu nispeten basit sürecin perde arkasında pek çok şey oluyor.

_dict_ nedir?

Her modülün adı verilen benzersiz bir özelliği vardır. __dikt__. Bu sözlük modülün sembol tablosunu içerir . Bir öğenin (yazılabilir) özellikleri bir sözlükte veya diğer eşleme nesnesinde saklanır.

Basitçe söylemek gerekirse Python'daki her nesnenin bir özelliği vardır. __dict__ sembolüyle gösterilen özellik . Ayrıca bu nesne kendisi için belirlenmiş her özelliğe sahiptir. __dict__'nin diğer adı haritalama vekili nesne. Sözlüğü aracılığıyla kullanabiliriz __dict__ özelliğini uygulama bir sınıf nesnesine.

Sözdizimi:

 object.__dict__ 

Örnek :

 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__) 

Çıktı:

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

Örnek 2:

Bu örnek şunu gösterecektir: __dict__ özelliği herhangi bir nesneden bir sözlük oluşturulabilir:

 # 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__) 

Çıktı:

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

Örnek 3:

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

Çıktı:

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

Python'da __dict__ kullanmadan Dictionary kullanmak:

Sözlük Oluşturma:

Python'da bir sözlük, bir ifadenin içine alınarak yapılabilir. süslü parantez içindeki girişlerin listesi ve bunları virgülle ayırarak . Sözlük, bir çift öğenin Anahtar ve diğerinin de Anahtar olduğu değer çiftlerini saklar. Anahtar:değer . Kıyasla anahtarlar, Hangi tekrarlanamaz ve değişmez olmalıdır, değerler sözlüklerde her türlü veri olabilir ve çoğaltılabilir .

Elementler virgüllerle ayrılmış , her anahtar kendi değerinden ayrılır iki nokta üst üste (:) ile ve tüm yapı içinde yer alıyor küme parantezleri . Tamamen kelimelerden arındırılmış bir sözlük şu şekilde yazılır: {} .

Sözlüğün anahtarları olmalıdır değişmez , örneğin tamsayılar, değişkenler veya dizeler , ancak değerler herhangi bir türde olabilir. Python sözlüklerinde aynı anahtar adın farklı yazılması şu şekilde kabul edilir: ayrı bir anahtar. Lütfen şunu unutmayın sözlük anahtarları büyük/küçük harfe duyarlıdır ; benzer ada sahip ancak büyük/küçük harf farklı olan anahtarlar farklı şekilde ele alınacaktır.

Örnek :

 # 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) 

Çıktı:

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

yerleşik yöntem dict() ayrıca şunlara da izin verir: sözlüklerin oluşturulması . Basitçe söylemek gerekirse iki küme parantezi {} birlikte sonuçlanacak boş sözlük .

Örnek :

 # 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) 

Çıktı:

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

Sözlük oluşturmanın karmaşıklıkları:

  • Zaman karmaşıklığı: O(uzunluk(dikte))
  • Uzay Karmaşıklığı: Açık)

İç içe geçmiş sözlükler:

Bir veya birden fazla kişinin yer aldığı bir sözlük şeklidir. tuşların kendisine değer olarak eklenmiş bir sözlüğü var anahtarın.

Örnek :

 # 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) 

Çıktı:

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

Bir sözlüğe öğelerin eklenmesi:

Var eleman eklemek için çeşitli yöntemler bir Python sözlüğüne. Değeri ve anahtarı birlikte belirterek, örneğin, Dict[Anahtar] = 'Değer', Bir sözlüğe aynı anda bir değer eklenebilir. Kullanmak yerleşik update() işlevi , bir Sözlükteki mevcut bir değer değiştirilebilir. Mevcut bir Sözlük ayrıca aşağıdakilerle genişletilebilir: iç içe geçmiş anahtar değerler .

Not : Bir değer eklenirken, anahtar/değer birleşimi zaten mevcutsa değer güncellenir. Değilse sözlüğe yeni bir anahtar ve değer eklenir.

Örnek :

 # 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) 

Çıktı:

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

Bir Sözlüğe öğe eklemenin karmaşıklıkları:

  • Zaman Karmaşıklığı: O(1)/O(n)
  • Uzay Karmaşıklığı: Ç(1)

Sözlük Öğelerine Erişim:

Bir sözlük işe yarar anahtarlar , diğer veri türleri ise değerleri almak için indekslemeyi gerektirir. Anahtarlar şu şekilde kullanılabilir: get() işlevi veya köşeli parantezler [] içinde.

Bir durumda anahtar bulunamıyor sözlükte, KeyError üretildi eğer kullanırsak köşeli parantez []. Öte yandan, anahtar bulunamazsa, get() işlevi Yok değerini döndürür.

Örnek :

 # 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)) 

Çıktı:

 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 

Bir Sözlükteki öğelere erişmenin karmaşıklıkları:

  • Zaman Karmaşıklığı: Ç(1)
  • Uzay Karmaşıklığı: Ç(1)

İç içe geçmiş bir sözlüğün öğesine erişme:

yardımını alabiliriz indeksleme [] tekniği mevcut bir anahtarın değerini almak için iç içe geçmiş sözlük .

Örnek :

 # 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.']) 

Çıktı:

 {3: 'JavatPoint'} JavatPoint Website 

Yerleşik Sözlük yöntemleri:

temizlemek() :

dize uzunluğu Java

dict.clear() işlevi her anahtar/değer çiftini ortadan kaldırır sözlükten.

kopya():

A sözlüğün sığ kopyası dict.copy() yöntemi tarafından döndürülür.

fromkeys() :

Sağlanan yinelenebilir olanı kullanma (string, list, set veya tuple) anahtarlar ve belirtilen değer olarak, dict.fromkeys() işlevi yeni bir sözlük oluşturur .

elde etmek() :

Bu ilişkili değeri verir verilen anahtarla.

öğeler() :

A sözlük görünümü nesnesi Sözlük öğelerinin anahtar/değer çiftlerinin bir listesi olarak dinamik bir sunumunu sunan Geri döndü dict.items() işlevi tarafından. Sözlük güncellendiğinde bu görünüm nesnesi de güncellendi .

dict.keys():

dict.keys() işlevi bir sözlük görünümü nesnesi döndürür sözlüğün yanında anahtarların listesi.

pop():

Bu anahtarı çıkardıktan sonra değerini döndürür . Sözlükte bir anahtar eksikse, ya bir anahtar atar Anahtar Hatası veya şunu döndürür: varsayılan değer eğer biri sağlandıysa.

içmek() :

Bu sözlükten bir öğeyi kaldırır ve bir tanımlama grubu döndürür (anahtar, değer) çiftlerinden. Son Giren İlk Çıkar (LIFO) dizi, çiftleri döndürmek için kullanılır.

Varsayılana ayarla() :

Bu verilen anahtar için sözlüğün değerini döndürür . Anahtar bulunamazsa, birlikte verilen anahtar varsayılan değer eklendi. Bu ayarlar Hiçbiri olarak varsayılan değer eğer temin edilmezse.

değerler():

dinamik bir görünüm sunan sözlük görünümü nesnesi olan her değerin sözlükte mevcut, döndürülür dict.values() işlevi tarafından. Sözlük güncellendiğinde bu görünüm nesnesi de güncellendi .

güncelleme() :

A sözlük veya anahtar/değer çiftleriyle yinelenebilir herhangi bir şey bir demet gibi, güncellenebilir dict.update() işlevini kullanarak.

Örnek :

 # 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()) 

Çıktı:

 {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++']) 

Sözlük ile liste arasındaki fark:

Aşağıdaki gibi veri yapıları liste ve sözlük temelde farklılar. Bir sipariş edilen ürün serisi bir yerde saklanabilir liste böylece onu indeksleyebilir veya üzerinde yineleyebiliriz. Listeler değiştirilebilir bir tür olduğundan oluşturulduktan sonra da değiştirilebilir. Python sözlüğü bir anahtar/değer depolama ve bir uygulamanın uygulanması karma tablosu . Belirli bir sırayı takip etmez ve yıkanabilir anahtarlar gerektirir. Ek olarak, anahtar aramalar için hızlıdır.

A liste elemanları aşağıdaki özellikleri içerir:

  • Özel olarak yeniden sıralanmadıkça, bunlar mevcut sırasını korumak (örneğin listeyi sıralayarak).
  • Herhangi bir türde olabilirler, hatta çeşitli kombinasyonlar .
  • Sayısal (sıfır tabanlı) indeksler aracılığıyla, onlara erişebiliriz.

Özellikleri sözlük unsurlar aşağıdaki gibidir:

  • Her girişin bir değer ve anahtar .
  • Siparişler garanti edilmez .
  • Anahtar değerleröğelere erişmek için kullanılır.Herhangi bir hash tablosu türü (dict dışında)anahtar değerler için kullanılabilir ve türler birleştirilebilir.Her türlü değerdiğer deyimler de dahil olmak üzere, izin verilir ve türler birleştirilebilir.

Kullanımı :

Bir kullanıyoruz sözlük eğer elimizde bir şey varsa değerlere karşılık gelen farklı anahtarlar kümesi , ancak liste sahip olduğumuzda sıralı şeyler grubu .

Çözüm :

  • Bir bilgisayar dilinde, sözlükler bilgiyi tutmak için kullanılan bir tür veri yapısıdır bu bir şekilde bağlantılı.
  • Her modülün adı verilen benzersiz bir özelliği vardır. __dikt__.
  • __sözde__ modülün sembol tablosunu içerir .
  • Bir elementin özellikleri bir dosyada saklanır. haritalama nesnesi.
  • Python'da her nesnenin bir __dict__ sembolüyle gösterilen özellik .
  • __dict__'nin başka bir adı da şu şekilde bilinir: haritalamaproxy nesnesi.
  • Python sözlüğünün iki bileşenine denir Anahtarlar ve Değerler .
  • Sen alamayabilir Sözlükler verilerini belirli bir sırada tutmadığından, verileriniz girdiğiniz sıraya göre geri döner.
  • Anahtarlar yalnızca şunlardan oluşacaktır: bir şey.
  • Değerler olabilir tamsayılar, listeler, listelerin içindeki listeler , vesaire.
  • Daha fazlası olamaz anahtar başına bir giriş (yinelenen anahtara izin verilmez)
  • Sözlüğün anahtarları olmalıdır değişmez , örneğin tamsayılar, değişkenler veya dizeler , ancak değerler herhangi bir türde olabilir.
  • Sözlük tuşlar büyük/küçük harfe duyarlıdır ; Python sözlüklerinde aynı anahtar adının farklı yazılması bir anahtar adı olarak kabul edilir. farklı anahtar .