python dersleri

Python Dictionary(Sözlük) ve Metotları

Merhaba Arkadaşlar,
Mobilhanem.com da Python Dersleri serisinin bu dersinde Dictionary(Sözlük) ve Metotlarını işleyeceğiz umarım sizler için faydalı olur.

Daha önceki derslerde Python da Veri Türleri dersinde Sözlük veri türünün ne olduğunu ve nasıl kullanıldığına değinmiştik eğer o yazıyı okumadıysanız buradan bakmanıza fayda var. Keyifli okumalar;

Sözlükler Nedir?

Sözlükler de Tuple ve List veri türleri gibi farklı veri türleri bulunduran bulundan mutable(değiştirilebilir) veri türü olduğunu ve süslü parantezlerle gösterildiğini söylemiştik.
Fakat sözlükler biraz farklıdır çünkü 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.

Sözlükler Nasıl Kullanılır

Kullanımını göstermeden önce neden sözlük onu anlatayım; bir İngilizce sözlük yaptığınızı düşünün veri tabanı olmadan nasıl olur her kelime için bir if koşul yazmak zorundasın her kelime işin bir koşul döngüsü buda programı yorar hemen bir örnekle göstereyim;

"""İ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ı")
.
.
.
.
.

Muhtemelen bu şekilde bir kod yazmış olacaksınız
Bide aynı uygulamayı Sözlükler ile de yazalım

"""İ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ı"}

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.

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

Sözlük Metotları

Hemen sözlük metotlarını sıralayalım;

['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__',
 '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__',
 '__getitem__', '__gt__', '__hash__', '__init__', '__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']

__X__ özel metotları çıkartırsak

['clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

Metotlarını bu derste işleyeceğiz.

Keys Metodu

Dersin başında Sözlükleri tanımlarken Sözlüklerin key(anahtar) ve value(değer) olmak üzere oluştuğunu söylemiştik. İşte bu metot Sözlükteki bütün anahtar kelimeleri veriyor hemen bir örnekle göstereyim;

sozluk ={"Computer":"Bilgisayar","Driver":"Sürücü","Memory":"Hafıza",
"Output":"Çıktı","Software":"Yazılım","Printer":"Yazıcı"}

print(sozluk.keys())

dict_keys(['Printer', 'Driver', 'Computer', 'Software', 'Output', 'Memory'])

 

Values Metodu

Bu metot da bir sözlük içindeki 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ğerlerin hepsini veriyor

sozluk ={"Computer":"Bilgisayar",
         "Driver":"Sürücü",
         "Memory":"Hafıza",
         "Output":"Çıktı",
         "Software":"Yazılım",
         "Printer":"Yazıcı"}

print(sozluk.items())

dict_items([('Output', 'Çıktı'), ('Printer', 'Yazıcı'), ('Computer', 'Bilgisayar'), ('Software', 'Yazılım'), ('Memory', 'Hafıza'), ('Driver', 'Sürücü')])

 

Get Metodu

Bu metodu anlatmadan önce şöyle 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 olan bir Sözlüğü kopyalama mızı sağlıyor.

sozluk ={"Computer":"Bilgisayar",
         "Driver":"Sürücü",
         "Memory":"Hafıza",
         "Output":"Çıktı",
         "Software":"Yazılım",
         "Printer":"Yazıcı"}

sozluk2= sozluk.copy()
print(sozluk2)
{'Output': 'Çıktı', 'Driver': 'Sürücü', 'Software': 'Yazılım', 'Computer': 'Bilgisayar', 'Memory': 'Hafıza', 'Printer': 'Yazıcı'}

Bu şekilde kullanıyoruz şimdi siz diyeceksiniz ne gerek var birinci sözlüğü ikinci sözlüğe atarız ama o zaman da şöyle bir sorun var siz birinci sözlükteki değerleri değiştirirseniz eğer ikinci sözlükte değişmiş olur. Ama bizim asıl amacımız birinci sözlüğün kopyasını saklamaktı.
Hemen göstereyim;

sozluk["Hardware"]= "Donanım"

işlemi yaptıktan sonra bide ikinci sözlüğe bakalım

print(sozluk2)

{'Memory': 'Hafıza', 'Printer': 'Yazıcı', 'Output': 'Çıktı', 'Software': 'Yazılım', 'Computer': 'Bilgisayar', 'Hardware': 'Donanım', 'Driver': 'Sürücü'}

Gördüğünüz gibi sonradan eklediğimiz “Hardware” üyesi ikinci sözlüğe de eklenmiş oldu.
Bide copy metodu ile yapalım;

sozluk2= sozluk.copy()
sozluk["Hardware"]= "Donanım"
print(sozluk2)
{'Software': 'Yazılım', 'Output': 'Çıktı', 'Printer': 'Yazıcı', 'Computer': 'Bilgisayar', 'Memory': 'Hafıza', 'Driver': 'Sürücü'}

Gördüğünüz gibi sonradan eklediğimiz değişiklikler ikinci sözlüğü etkilemiyor.

Clear Metodu

Adından da anlaşılacağı gibi bu metot temizleme işlevini görüyor ama dikkat etmeniz gereken bir şey var oda bu metot sözlüğü değil sözlüğün içini silmeye yarıyor.

sozluk ={"Computer":"Bilgisayar",
"Driver":"Sürücü",
"Memory":"Hafıza",
"Output":"Çıktı",
"Software":"Yazılım",
"Printer":"Yazıcı"}

sozluk.clear()
print(sozluk)
{}

Peki sözlüğü tamamıyla nasıl sileriz diyorsanız hemen göstereyim;

del sozluk
print(sozluk)

Traceback (most recent call last):
File "C:/Users/Cahit/Desktop/Mini/dictionary.py", line 7, in <module>
print(sozluk)
NameError: name 'sozluk' is not defined

Gördüğünüz gibi sözlüğü yazmaya çalıştığımızda program sözlüğün olmadığını söylüyor.

Ayrıca bu şekilde sözlükteki bir öğeyi silebiliriz;

sozluk ={"Computer":"Bilgisayar",
         "Driver":"Sürücü",
         "Memory":"Hafıza",
         "Output":"Çıktı",
         "Software":"Yazılım",
         "Printer":"Yazıcı"}


del sozluk["Computer"]
print(sozluk)
{'Memory': 'Hafıza', 'Driver': 'Sürücü', 'Output': 'Çıktı', 'Software': 'Yazılım', 'Printer': 'Yazıcı'}

Bu şekilde “Computer” öğesini silmiş olduk.

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 şekilde “Driver” öğesini silmiş olduk.

Popitem Metodu

Bu metot ise pop metodu ile aynı işlevi yapar ama bu metot parametre almaz rastgele bir öğeyi siler.

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 bu metot rastgele olarak “Software” ögesini silmiş 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

Update Metodu

Bu metot Sözlüğü güncellemenize yarayan metottur. bir örnekle kullanımını göstereyim;

Diyelim ki bir öğrenci listemiz var ve bu öğrencilerin notları var;

liste_1 ={"Ali":70,"Mehmet":50,"Kemal":60,"Mustafa":75}

Biz notlara 10’ar puan eklemek istiyoruz yani yeni hali şu olacak;

liste_2 ={"Ali":80,"Mehmet":60,"Kemal":70,"Mustafa":85}

ikinci liste gibi olmasını istiyorsak yapacağımız işlem;

liste_1.update(liste_2)
print(liste_1)

{'Mehmet': 60, 'Kemal': 70, 'Ali': 80, 'Mustafa': 85}

gördüğünüz gibi update metodunun kullanımı da bu şekilde.

Mobilhanem.com da Python da Dictionary(Sözlükler) ve Metotları  dersinin  sonuna geldik bir sonraki yazımızda Python da  Set(küme) Fronzset(dondurulmuş küme) ve Metotlarını işleyeceğiz. Eksik yada yanlış gördüğünüz yada anlamadığınız yerler için  sayfanın altında yorum bölümünden yada soru-cevap kısmından sorabilirsiniz. Bir  sonraki yazıda görüşmek üzere 🙂

Bütün Python derslerine buradan ulaşabilirsiniz

235

Cahit İşleyen

Data Scientist at @Embedica.ai
Python ve Linux sever.
Çay tiryakisi

5 Yorum

  • Merhabalar sözlüklerle ilgili yazınız çok işime yaradı ancak bir sıkıntı var. Benim sözlüğüm 1 keys 1 value şeklinde değil. 1 keys 1 den fazla values’a sahip ve bunları çıktı şeklinde gösteriyor. Ben bu çıktıları listelemek istiyorum fakat herhangi bir yol bulamadım. Yardımcı olursanız sevinirim, iyi günler.

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?