Python’da sözlüklerde list,demet,karater dizisi gibi veritilerinden biridir. Sözlük yapısı list’e benzemektedir. Listelerde verilerin indexlerini numeric değerler vermemiz gerekiyordu. Python sözlüklerde ise index değerlerini metinsel ifadelerde kullanabiliyoruz. Php’de dizi indexklerini esnek bir şekilde hem numeric hemde string değerler kullanabiliyorduk hatırlarsanız. Aynı veri yapısı javascripte object olarak tanımlanmaktadır. Sözlüklerle ilgili bir kaç örnek verdiğimizde daha kolaya anlaşılacaktır. Şimdi bir sözlük tanımlayalım.
1 2 3 4 5 6 7 | sozluk={"yazar":"Necip Fazık Kısakürek"} print(type(sozluk)); ###################Ekran Çıktısı########################### #<class 'dict'> ###################Ekran Çıktısı########################### |
Dikkat ederseniz sözlük tanımlamsınde küme parantezleri {} kullandık. Diğer veritiplerinden ayıran en önemli özelliklerden biridir. Yine yukarıdaki örnekte sözlük veritipinin tip çıktısını type fonskiyonu ile öğrendik. Peki sözlükleteki verilere nasıl ulaşacağız? Evet bu durumda, yukardaki tanımlamada index adı “yazar”, verisi ise “Necip Fazıl Kısakürek” tir. Şimdi bunları yapalım.
1 2 3 4 5 6 7 8 | sozluk={"yazar":"Necip Fazık Kısakürek"} print(sozluk["yazar"]); ###################Ekran Çıktısı########################### #Necip Fazık Kısakürek ###################Ekran Çıktısı########################### |
Evet index adını köşeli parantesler içersinde yazarak ilgili veriye ulaşmış olduk. Tabi sözlüklerde bir den çok veri ve birden çok farklı türede veri tanımladığımızıda belirtmek isterim. Tabi burada en dikkat edilmesi gereken durum bir birinden farlı veri tiplerinide bir sözlükte topluyor olmamızdır. Şimdi bunu örnekleyelim:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | sozluk={ "yazar":"Necip Fazık Kısakürek", "dogumTarihi":1904, "dogumYeri":"İstanbul" } print("Adı : {}\nDoğum Tarihi : {}\nDoğum Yeri : {}".format(sozluk["yazar"],sozluk["dogumTarihi"],sozluk["dogumYeri"])); ###################Ekran Çıktısı########################### #Adı : Necip Fazık Kısakürek #Doğum Tarihi : 1904 #Doğum Yeri : İstanbul ###################Ekran Çıktısı########################### |
Yine sözlük tabloların indeks isimlerini belirlerken türkçe karaterlerde kullanabilmekteyiz. Bu durum bize birden çok kolaylık vermektedir. Örneğin Türkçe karakterlerin düzenlenerek self link haline gelen bir sözlük oluşturalım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | sozluk = { "Ö": "O", "ç": "c", "Ü": "U", "Ç": "C", "İ": "I", "ı": "i", "Ğ": "G", "ö": "o", "ş": "s", "ü": "u", "Ş": "S", "ğ": "g", " ": "-"} isimSoyisim="Çağlar Bostancı" selfIsim="" for harf in isimSoyisim: if harf in sozluk: selfIsim+=sozluk[harf] else: selfIsim+=harf; print(selfIsim.lower()) ###################Ekran Çıktısı########################### #caglar-bostanci ###################Ekran Çıktısı########################### |
Yukarıdaki örnekte girilen bir isimin veya içerik başlığının url linke uyumlu hale getirilmesini sağladı. Öncelikle çeviri yapılamsı gereken bir sözlük tablosu oluşturduk. Sözcükğü bir döngüye sokarak if sorgusuyla sözlük tablosunda olanlar varsa onların değişimini sağladık ve en son sözcüğü küçük hale getirerek ekrana çıktısını bastık.
Sözlükler diğer programlama dillerinde olduğu gibi Python’da da çok sık kullanılmaktadır. Şimdi aşağıdaki örneklerle sözlükleri pekiştirelim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | sozluk = { "Necip Fazıl Kısakürek":{ "dogumT":1904, "dogumY":"İstanbul", "olumT" :1983 }, "Ömer Lütfi Mete":{ "dogumT":1950, "dogumY":"İyidere", "olumT" :2009 }, "Ümit Yaşar Oğuzcan":{ "dogumT":1926, "dogumY":"Tarsus", "olumT" :2009 } } print(""" Doğum Tarihi\t: {} Doğum Yeri\t: {} Ölüm Tarihi\t: {}""".format( sozluk["Ömer Lütfi Mete"]["dogumT"], sozluk["Ömer Lütfi Mete"]["dogumY"], sozluk["Ömer Lütfi Mete"]["olumT"])) ###################Ekran Çıktısı########################### # Doğum Tarihi : 1950 # Doğum Yeri : İyidere # Ölüm Tarihi : 2009 ###################Ekran Çıktısı########################### |
Yukarıdaki uygulamada yazarların isimler indeks olarak belirlendi ve yazarlar hakkındaki bilgiler ise yine sözlük olarak tanımlandı. Yani iki boyutlu bir sözlük tanımlamış olduk. Yine yukardaki örnekte tanımlamış olduğumuz iki boyutlu sözlüğü ekrana bastık.
Dikkat edilmesi gereken önemli hususlardan biride python sözlük anahtarının değiştirilemeyen (Demetler,sayılar,karakter dizileri) kullanılmalıdır. Diğer veri tipleri kullanıldığında hata ile karşılaşılacaktır.
1 2 3 4 5 6 7 8 9 10 11 12 | sozluk = { 2021:"Bu verinin indeksi bir sayı", (23,45):"Buradaki index bir demet", "veri":"Buradaki verinin indeksi bir karakter dizisi" } print(sozluk) ###################Ekran Çıktısı########################### #{2021: 'Bu verinin indeksi bir sayı', (23, 45): 'Buradaki index bir demet', 'veri': 'Buradaki verinin indeksi bir karakter dizisi'} ###################Ekran Çıktısı########################### |
Şimdi ise sözlük içerisindeki verileri değiştirelim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | sozluk = { "veli":"Ankara", "ahmet":"Manisa", "ayse":"Kırşehir" } print(sozluk) sozluk["veli"]="Trabzon" print(sozluk) ###################Ekran Çıktısı########################### #{'veli': 'Ankara', 'ahmet': 'Manisa', 'ayse': 'Kırşehir'} #{'veli': 'Trabzon', 'ahmet': 'Manisa', 'ayse': 'Kırşehir'} ###################Ekran Çıktısı########################### |
İsterseniz birde dinamik olarak bir sözlük nasıl oluşturulur aşağıdaki örnekle görelim.
1 2 3 4 5 6 7 8 9 10 11 | listeIsim =["Ahmet","Yahya","Hatice"] listeSoyIsim=["Tahta","Meşe","Köse"] sozluk={} for index in range(len(listeIsim)): sozluk[listeIsim[index]]=listeSoyIsim[index] print(sozluk) ###################Ekran Çıktısı########################### #{'Ahmet': 'Tahta', 'Yahya': 'Meşe', 'Hatice': 'Köse'} ###################Ekran Çıktısı########################### |
Sözlük Metotları
List,Demet,Karakter Dizisi veri türlerinde olduğu gibi bu veri türünde de belinmesi gereken metotlar mevcuttur. Şimdi sizlerle beraber bu metotların kullanımına bakalım.
Python Sözlük keys() Fonksiyonu Kullanımı
Python’da sözlük veri tiplerinde kullanılan keys() fonksiyonu, var olan sölük içersindeki veri indekslerini geri dönderir.
1 2 3 4 5 6 7 8 9 10 11 | sozluk ={"Ahmet":"Tahta","Yahya":"Meşe","Hatice":"Köse"} print(list(sozluk.keys())) print(tuple(sozluk.keys())) ###################Ekran Çıktısı########################### #['Ahmet', 'Yahya', 'Hatice'] #('Ahmet', 'Yahya', 'Hatice') ###################Ekran Çıktısı########################### |
Yukarıdaki örnekte oluşturulan bir sözlüğün keys() fonksiyonu ile indekslerini list ve demet veri tipinde geri oladık.
Python Sözlük values() Fonksiyonu Kullanımı
Python’da sözlük veri tiplerinde kullanılan values() fonksiyonu, var olan sölük içersindeki indekslerin verilerini geri dönderir.
1 2 3 4 5 6 7 8 9 10 11 | sozluk ={"Ahmet":"Tahta","Yahya":"Meşe","Hatice":"Köse"} print(list(sozluk.values())) print(tuple(sozluk.values())) ###################Ekran Çıktısı########################### #['Tahta', 'Meşe', 'Köse'] #('Tahta', 'Meşe', 'Köse') ###################Ekran Çıktısı########################### |
Oluşturmuş olduğumuz listenin verilerini list ve demet tipinde aldık.
Python Sözlük items() Fonksiyonu Kullanımı
Python’da sözlük veri tiplerinde kullanılan items() fonksiyonu, var olan sölük içersindeki indeksleri ve verileri geri dönderir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | sozluk ={"PHP":"Personal Home Page","CSS":"Cascading Style Sheets","HTML":"HyperText Markup Language"} print(sozluk.items()) for index,veri in sozluk.items(): print("{}\t:{}".format(index,veri)) ###################Ekran Çıktısı########################### #dict_items([('PHP', 'Personal Home Page'), ('CSS', 'Cascading Style Sheets'), ('HTML', 'HyperText Markup Language')]) #PHP :Personal Home Page #CSS :Cascading Style Sheets #HTML :HyperText Markup Language ###################Ekran Çıktısı########################### |
Oluşturmuş olduğumuz listenin verilerini ve index değerlerini ekrana bastık. Daha sonra bu sözlüğü items() fonsiyonu ile for döngüsüne sokarak index ve değerlerini ekrana bastık.
Python Sözlük get() Fonksiyonu Kullanımı
Python’da sözlük veri tiplerinde kullanılan get() fonksiyonu, var olan sölük içersindeki bulanamayan indekslerde mesaj vermemizi sağlar.
1 2 3 4 5 6 7 8 9 10 11 | sozluk ={"PHP":"Personal Home Page","CSS":"Cascading Style Sheets","HTML":"HyperText Markup Language"} print(sozluk.get("PHP","Aranan indeks mevcut değil!")) print(sozluk.get("PYTHON","Aranan indeks mevcut değil!")) ###################Ekran Çıktısı########################### #Personal Home Page #Aranan indeks mevcut değil! ###################Ekran Çıktısı########################### |
Oluşturmuş sözlükte get() fonksiyonu ile var olan indeklerde verileri yazarken olmayan indekslerde ise hata mesajını ekrana bastı.
Python Sözlük clear() Fonksiyonu Kullanımı
Python’da sözlük veri tiplerinde kullanılan clear() fonksiyonu, var olan sözlüğü temizlememizi sağlar.
1 2 3 4 5 6 7 8 9 10 11 12 | sozluk ={"PHP":"Personal Home Page","CSS":"Cascading Style Sheets","HTML":"HyperText Markup Language"} print(sozluk) sozluk.clear() print(sozluk) ###################Ekran Çıktısı########################### #{'PHP': 'Personal Home Page', 'CSS': 'Cascading Style Sheets', 'HTML': 'HyperText Markup Language'} #{} ###################Ekran Çıktısı########################### |
Python Sözlük copy() Fonksiyonu Kullanımı
Python’da sözlük veri tiplerinde kullanılan copy() fonksiyonu, var olan sözlüğü kopyalayı sağlar.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | sozluk ={"PHP":"Personal Home Page","CSS":"Cascading Style Sheets","HTML":"HyperText Markup Language"} print(id(sozluk)) sozluk2=sozluk print(id(sozluk2)) sozluk2=sozluk.copy() print(id(sozluk2)) ###################Ekran Çıktısı########################### #1490638116480 #1490638116480 #1490672964224 ###################Ekran Çıktısı########################### |
Yukarıdaki örnekte sozluk adılı veriyi sozluk2 adı verilye direk aktardığımızda id numaralarının değişmediğini görüyoruz. Yani sozluk2’de yapmış olduğumuz değişiklik sozluk verisinde de olacaktır. Fakat copy() metoduyla kopladığımızda farklı bir veri olarak ram bellekte yer açıyor.
Python Sözlük formkeys() Fonksiyonu Kullanımı
Python’da sözlük veri tiplerinde kullanılan formkeys() fonksiyonu, yeni bir sözlük verisi oluşturmaya yarar..
1 2 3 4 5 6 7 8 9 | data="PHP","CSS","HTML" sozluk=dict.fromkeys(data,"Language") print(sozluk) ###################Ekran Çıktısı########################### #{'PHP': 'Language', 'CSS': 'Language', 'HTML': 'Language'} ###################Ekran Çıktısı########################### |
Python Sözlük pop() Fonksiyonu Kullanımı
Python’da sözlük veri tiplerinde kullanılan pop() fonksiyonu, sözlükte belirtilen anahtarı silmeye yarar…
1 2 3 4 5 6 7 8 9 10 11 | sozluk ={"PHP":"Personal Home Page","CSS":"Cascading Style Sheets","HTML":"HyperText Markup Language"} print(sozluk) sozluk.pop("HTML") print(sozluk) ###################Ekran Çıktısı########################### #{'PHP': 'Personal Home Page', 'CSS': 'Cascading Style Sheets', 'HTML': 'HyperText Markup Language'} #{'PHP': 'Personal Home Page', 'CSS': 'Cascading Style Sheets'} ###################Ekran Çıktısı########################### |
Python Sözlük popitem() Fonksiyonu Kullanımı
Python’da sözlük veri tiplerinde kullanılan popitem() fonksiyonu, sözlükte mevcut alan verilerden en sonki öğeyi siler
1 2 3 4 5 6 7 8 9 10 11 | sozluk ={"PHP":"Personal Home Page","CSS":"Cascading Style Sheets","HTML":"HyperText Markup Language"} print(sozluk) sozluk.pop("HTML") print(sozluk) ###################Ekran Çıktısı########################### #{'PHP': 'Personal Home Page', 'CSS': 'Cascading Style Sheets', 'HTML': 'HyperText Markup Language'} #{'PHP': 'Personal Home Page', 'CSS': 'Cascading Style Sheets'} ###################Ekran Çıktısı########################### |
Python Sözlük setdefault() Fonksiyonu Kullanımı
Python’da sözlük veri tiplerinde kullanılan setdefault() fonksiyonu, sözlükğe yeni bir elaman eklemek için kullanılır.
1 2 3 4 5 6 7 8 9 10 11 | sozluk ={"mercedes":("E200","S350"),"BMW":("3.20","5.25"),"FORD":("mustang","mondeo")} print(sozluk) sozluk.setdefault("citroen",("C3","C5")) print(sozluk) ###################Ekran Çıktısı########################### #{'mercedes': ('E200', 'S350'), 'BMW': ('3.20', '5.25'), 'FORD': ('mustang', 'mondeo')} #{'mercedes': ('E200', 'S350'), 'BMW': ('3.20', '5.25'), 'FORD': ('mustang', 'mondeo'), 'citroen': ('C3', 'C5')} ###################Ekran Çıktısı########################### |
Python Sözlük update() Fonksiyonu Kullanımı
Python’da sözlük veri tiplerinde kullanılan update() fonksiyonu, daha önce oluşturulmuş bir sözlüğü güncellemye yarar.
1 2 3 4 5 6 7 8 9 10 11 | sozluk ={"mercedes":("E200","S350"),"BMW":("3.20","5.25"),"FORD":("mustang","mondeo")} print(sozluk) sozluk.update({"mercedes":("E250","S450"),"BMW":("3.16","M5"),"FORD":("Focus","Fiesta")}) print(sozluk) ###################Ekran Çıktısı########################### #{'mercedes': ('E200', 'S350'), 'BMW': ('3.20', '5.25'), 'FORD': ('mustang', 'mondeo')} #{'mercedes': ('E250', 'S450'), 'BMW': ('3.16', 'M5'), 'FORD': ('Focus', 'Fiesta')} ###################Ekran Çıktısı########################### |