
Merhaba Arkadaşlar,
pythonearth.com da Python Eğitim serisinin bu dersinde Dictionary(Sözlük) ve Metotlarını işleyeceğiz
Sözlük Nedir?
Sözlükler aynı listeler gibi birden çok elemanı bir araya toplayan yapılardır. Tabi listelerden farklı olan tarafı sıralı olmamalarıdır. Listelerin indexleri üzerinde bir sıralama vardır ama bu sözlüklerde mevcut değildir.
Sözlükler iki kısımdan oluşur; keys(anahtar) ve value(değer), value kısmı bütün veri türünü içerebilir fakat keys kısmı sadece string ve int tipinde olabilir.
Listelerde elemanlar sıfırdan başlayarak tam sayılarla indekslenirken , sözlük elemanlarını anahtarlarla indekslenir. Bu anlamda sözlükler listelerden daha geneldirler.
Tüm Python Derslerine buradan ulaşabilirsiniz.
Sözlük Oluşturma
Python’da sözlük oluşturmanın dört farklı yolu vardır. Şimdi bir kişinin bilgilerinin saklandığı bir sözlük oluşturalım.
- Doğrudan sözlük oluşturma
kisi={"Adı":"Cem","Soyadı":"Karaca","Mesleği":"Sanatçı"} print(kisi)
Çıktı
{'Adı': 'Cem', 'Soyadı': 'Karaca', 'Mesleği': 'Sanatçı'}
- Boş bir sözlük yarattıktan sonra anahtar ve değerleri tek tek eklemek
kisi={} kisi["Adı"]="Cem" kisi["Soyadı"]="Karaca" kisi["Mesleği"]="Sanatçı" print(kisi)
Çıktı
{'Adı': 'Cem', 'Soyadı': 'Karaca', 'Mesleği': 'Sanatçı'}
-
dict
fonksiyonunu ile kullanmak:kisi=dict(Adı="Cem",Soyadı="Karaca",Mesleği="Sanatçı") print(kisi)
Çıktı
{'Adı': 'Cem', 'Soyadı': 'Karaca', 'Mesleği': 'Sanatçı'}
dict
fonksiyonuna (anahtar, değer) çiftleri dizisi vermekkisi=dict([("isim","Cem"),("Soyadı","Karaca"),("Mesleği","Sanatçı")]) print(kisi)
Çıktı
{'Adı': 'Cem', 'Soyadı': 'Karaca', 'Mesleği': 'Sanatçı'}
Bu sonuncu yöntem genelde zip fonksiyonu ile beraber de kullanılır.
keys=["Adı","Soyadı","Mesleği"] values=["Cem","karaca","Sanatçı"] print((zip(keys,values))
Şöyle bir kullanımda önünüze muhtemelen böyle bir çıktı gelecektir.
Çıktı
<zip object at 0x0000024014755508>
Evet arkadaşlar burada tabi ki zip fonksiyonunu dict olmadan ekrana yazdırdığımız için böyle bir sonuçla karşılaştık. Burada düzeltmemiz gereken nokta print(zip(keys,values) yerine print(dict(zip(keys,values))) ve ekranda artık bir çıktı göreceksiniz.
Şimdi bir İngilizce kelime uygulaması yapalım.
"""İngilizce Sözlük uygulaması""" kelime = input("İngilizce Kelime girin :") if kelime=="Computer": print("Bilgisayar") elif kelime=="Driver": print("Sürücü") elif kelime=="Memory": print("") elif kelime == "Output": print("Çıktı") elif kelime=="Software": print("Yazılım") elif kelime=="Printer": print("Yazıcı")
Aslında böylede yapılabilir ama çok fazla kod ve karışık bir kod parçacığı oldu şimdiden tabi siz bunu büyük bir proje olarak düşünün çok fazla meşakkatli olur. Bu yüzden sözlüklerle yapmaya çalışalım aynı örneği.
"""İngilizce Sözlük uygulaması""" kelime = input("İngilizce Kelime girin :") sozluk ={"Computer":"Bilgisayar","Driver":"Sürücü","Memory":"Hafıza", "Output":"Çıktı","Software":"Yazılım","Printer":"Yazıcı"}
Evet gördüğünüz gibi dictionary(sözlük) kullanarak daha kısa ve sade bir kod yazdık.
Sözlük Metodları
Bir sözlük nesnesine ait metodları dir()
fonksiyonuyla görebiliriz.
dir(dict)
Çıktı
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
Başında ve sonunda altçizgi olan metotlar nesne içi kullanım içindir.
Sözlük Ögelerine Erişmek
Sözlükler anahtar değer ilişkisine dayanır. Her değerin bir anahtar karşılığı vardır. O zaman biz bildiğimiz anahtar ile değere ulaşabiliriz hemen bir örnek verelim;
sozluk ={"Computer":"Bilgisayar", "Driver":"Sürücü", "Memory":"Hafıza", "Output":"Çıktı", "Software":"Yazılım", "Printer":"Yazıcı"} print(sozluk["Computer"]) Bilgisayar
Burada dikkat etmemiz gereken bir şey var biz sözlüklere erişirken diğer veri türlerinde olduğu gibi köşeli parantezler içinde çağıramıyoruz sebebi ise şu Sözlükler sıralı veri tipleri değiller hemen bir örnek ile size göstereyim;
sayilar ={"1":"bir","2":"iki","3":"üç","4":"dört","5":"beş"} print(sayilar) {'1': 'bir', '3': 'üç', '2': 'iki', '5': 'beş', '4': 'dört'}
Bu şekilde daha düzgün ve okunabilir kod yazmış olacaksınız ayrıca Sözlükler mutable(değiştirilebilir) veri türü olduğu için kolayca ekleme, silme değiştirme vs. işleri yapabiliriz.
['clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
Bu derste “_özel_”bu şeklde gözüken metodları çıkardığımızda geriye kalan metodlarımız bunlar kalıyor.Bu metodları kullanacağız.
Keys Metodu
Bu metot sözlükteki bütün anahtar değerleri getiriyor. Küçük bir örnekle aktarmaya çalışalım.
sozluk ={"Computer":"Bilgisayar","Driver":"Sürücü","Memory":"Hafıza", "Output":"Çıktı","Software":"Yazılım","Printer":"Yazıcı"} print(sozluk.keys())
Values Metodu
Bu metod bir sözlük içerisindeki bütün değerleri veriyor.
sozluk ={"Computer":"Bilgisayar", "Driver":"Sürücü", "Memory":"Hafıza", "Output":"Çıktı", "Software":"Yazılım", "Printer":"Yazıcı"} print(sozluk.values()) dict_values(['Yazılım', 'Çıktı', 'Bilgisayar', 'Hafıza', 'Sürücü', 'Yazıcı'])
Items Metodu
Bu metot ise hem anahtar hem de değerleri veriyor.
sozluk ={"Computer":"Bilgisayar", "Driver":"Sürücü", "Memory":"Hafıza", "Output":"Çıktı", "Software":"Yazılım", "Printer":"Yazıcı"} print(sozluk.items())
Çıktı
dict_items([('Computer', 'Bilgisayar'), ('Driver', 'Sürücü'), ('Memory', 'Hafıza'), ('Output', 'Çıktı'), ('Software', 'Yazılım'), ('Printer', 'Yazıcı')])
PopItem Metodu
Bu metot sözlük içerisine en son eklenen öğeyi kaldırır.(Dikkat)3.7’den önceki sürümlerde rastgele kaldırma işleri yapıyor.
sozluk ={"Driver":"Sürücü", "Memory":"Hafıza", "Output":"Çıktı", "Software":"Yazılım", "Printer":"Yazıcı"} sozluk.popitem() print(sozluk) {'Driver': 'Sürücü', 'Printer': 'Yazıcı', 'Output': 'Çıktı', 'Memory': 'Hafıza'}
Görüldüğü gibi software silmiş oldu.
Pop Metodu
Bu metot anahtar kelime ile tek bir öğeyi silme işlemini yapıyor. Ayrıca silinen öğenin anahtar değerini ekrana basar.
sozluk ={"Driver":"Sürücü", "Memory":"Hafıza", "Output":"Çıktı", "Software":"Yazılım", "Printer":"Yazıcı"} sozluk.pop("Driver") print(sozluk) {'Memory': 'Hafıza', 'Printer': 'Yazıcı', 'Software': 'Yazılım', 'Output': 'Çıktı'}
Bu durumda “Driver silinmiş oldu ”
Setdefault Metodu
Bu metot da get metodu ile aynıdır farkı ise aranılan anahtar yoksa ise siz o anahtara bir değer vererek yazdırabiliyorsunuz.
Aranılan kelime bulunuyorsa ;
sayilar ={"1":"bir","2":"iki","3":"üç","4":"dört","5":"beş"} print(sayilar.setdefault("4"),) dört
aranılan anahtar yok ise;
print(sayilar.setdefault("8","sekiz"),) sekiz
Get Metodu
Küçük bir uygulama yapalım;
kelime=input("Bir kelime girin :") sozluk ={"Computer":"Bilgisayar", "Driver":"Sürücü", "Memory":"Hafıza", "Output":"Çıktı", "Software":"Yazılım", "Printer":"Yazıcı"} if kelime in sozluk: print(sozluk[kelime]) else: print("Aradığınız kelime Sözlükte bulunamadı") Bir kelime girin :Memory Hafıza Bir kelime girin :deneme Aradığınız Kelime Sözlükte bulunamadı
Burada aradığımız kelime eğer varsa kelime veriyor eğer yoksa bize aranılan kelimenin olmadığı veren bir program yazdık. İşte get metodu burada if koşul döngüsünü yazmadan aynı işlevi yapmamızı sağlıyor.
kelime=input("Bir kelime girin :") sozluk ={"Computer":"Bilgisayar", "Driver":"Sürücü", "Memory":"Hafıza", "Output":"Çıktı", "Software":"Yazılım", "Printer":"Yazıcı"} print(sozluk.get(kelime,"Aradığınız kelime Sözlük içinde bulunmamaktadır")) Bir kelime girin :Software Yazılım Bir kelime girin :Book Aradığınız kelime Sözlük içinde bulunmamaktadır
Copy Metodu
Bu metot var olan bir Sözlüğü kopyalama mızı sağlıyor.