Sözlük, Python'da haritalar gibi veri değerlerini depolamak için kullanılan sırasız bir veri değerleri koleksiyonudur. Sözlük, diğer veri türleri gibi tek bir değeri öğe olarak tutmak yerine anahtar/değer çiftlerini tutar. Sözlükte uygulanan anahtarın benzersiz ve değişmez olması gerekir. Yani, Python tuple'ı bir anahtar olabilir, ancak Python listesi sözlükte bir anahtar olamaz. {} küme parantezlerinin içine bir dizi öğe yerleştirerek bir sözlük oluşturabiliriz, virgül ',' değerleri ayırabilir.
Örnek 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])
Çıktı:
Dictionary: {1: 'A', 2: 'B', 3: 'C', 4: 'D'} key pair 1: A key pair 3: C
Ancak o zaman 5. anahtar değerini yazdırmaya çalışırsak hatayı alırız çünkü 'Dict_1' 5. anahtar değerini içermiyor.
Örnek 2:
Dict_1 = {1: 'A', 2: 'B', 3: 'C', 4: 'D'} print ('Dictionary: ') print (Dict_1) print ('key pair 5: ', Dict_1[5])
Çıktı:
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
ne zaman anahtar hatası gündeme geldiğinde kullanıcılar için sorun haline gelebilir. Python'un konteyner benzeri başka bir sözlüğünü kullanarak bu hatayı aşabiliriz. Varsayılan dikte . Kullanıcılar bu sözlüğü içinde bulabilirler. 'koleksiyonlar' modülü.
Varsayılan dikte
Defaultdict, 'koleksiyonlar' modülünün içinde bulunan bir konteynere benzeyen bir Python sözlüğüdür. Sözlük benzeri nesneyi döndürmek için kullanılan sözlük sınıfının bir alt sınıfıdır. Hem defaultdict hem de sözlük aynı işlevselliğe sahiptir; ancak defaultdict, kullanıcı tarafından oluşturulan sözlükte bulunmayan Anahtar için varsayılan bir değer sağladığından hiçbir zaman KeyError değerini yükseltmez.
Sözdizimi:
defaultdict(default_factory)
Parametreler:
Örnek:
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'])
Çıktı:
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'in İç Çalışması
defaultdict kullandığımızda standart sözlük işlemlerine ek olarak ek bir yazılabilir örnek değişkeni ve bir yöntem elde ediyoruz. Yazılabilir örnek değişkeni default_factory parametresidir ve __eksik__ yöntemdir.
Örnek:
Java dize birleştirme
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'])
Çıktı:
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>
Örnek:
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'))
Çıktı:
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>
'Liste' default_factory olarak nasıl kullanılır?
Bir liste sınıfını default_factory argümanı olarak iletebiliriz ve bu, liste formatında ayarlanan değerlerle bir defaultdict oluşturacaktır.
Örnek:
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)
Çıktı:
Dictionary with values as list: defaultdict(, {7: [7], 8: [8], 9: [9], 10: [10], 11: [11]})
'int' default_factory olarak nasıl kullanılır?
İnt sınıfını default_factory argümanı olarak iletebiliriz ve bu, varsayılan değeri sıfır olarak ayarlanmış bir defaultdict yaratacaktır.
Örnek:
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)
Çıktı:
defaultdict(, {1: 2, 2: 3, 3: 1, 4: 2})
Çözüm
Bu dersimizde Python'da defaultdict'i ve default_factory parametresini kullanarak defaultdict üzerinde farklı işlemleri nasıl gerçekleştirebileceğimizi tartıştık.