dict (Sözlük)

Python'daki sözlük mantığı, gerçek hayattaki sözlüklerin mantığıyla aynıdır. Gerçek hayattaki sözlükler şu şekilde gözükür:

kelime: anlam

Burada, sol tarafta duran 'kelime', Python'da 'Key' yani 'Anahtar' olarak geçer. Sağ tarafta duran 'anlam' ise Python'da 'Value' yani 'Değer' olarak geçer. Dolayısıyla her anahtarın bir değeri olmak zorundadır. Sözlükleri de aslında bu amaç için kullanıyoruz. Örneğin Cyber diye birinin boyu 1.78, Worm diye birinin boyu ise 1.80 olsun. Bunları normal hayatta şu şekilde veremez miyiz?

Cyber: 178

Worm: 180

Bence verebiliriz. Buradaki key'ler; 'Cyber' ve 'Worm' şeklindeyken value'lar '178' ve '180' şeklindedir. İşte, sözlük mantığı tam olarak böyle işliyor. Bu konuyu örneklerle daha iyi anlayacaksınız ama her şeyden önce syntax yapısına bakmamız gerekiyor. Çünkü birçok kişi bu syntax yapısını karıştırıyor.

Sözlüğümüze bir isim verdikten sonra süslü parantez (küme parantezi) açıyoruz ve yazacaklarımızı bu süslü parantezler içerisine yazıyoruz. Dikkat ederseniz genelde olduğu gibi her kalıbı diğerinden bir virgül ile ayırıyoruz. Kalıpları ise şöyle yazıyoruz:

Key değerini sol tarafa yazdıktan sonra bir adet iki nokta üst üste koyuyoruz. Sonrasında Key değerinin Value kısmını da yazıyoruz. Bu durumda şöyle bir yapı oluyor: "key:value". İşte bu yapıdan sonra virgül koyup diğer yapılarımıza bakıyoruz. Ancak burada yalnızca string ifade girmenize gerek yoktur; bakalım.

Bakın; farklı ver tiplerine ait değerleri de verebiliyoruz. Örneğin "IsMarried": False.

Bunları yazdırma işlemine bakalım; şaşırmayacaksınızdır.

Nasıl tanımladıysak o şekilde yazdırıldı. Devam etmeden önce sözlüklerle alakalı hangi fonksiyonları kullanabileceğimize bir bakalım. Bunun için bir önceki blogda uyguladığım yöntemi uygulayacağım.

Neler yapabileceğimize baktıktan sonra bunları deneyelim. Bunun için phoneNumbers isimli bir sözlük oluşturuyorum ve iki kişinin telefon numarasını ekliyorum.

clear()

Bu komut, adında anlayacağınız üzere oluşturduğumuz sözlüğün içeriğini temizliyor.

copy()

Bu komut, var olan bir sözlüğü başka bir sözlüğe kopyalamaya olanak tanır. Örneğin phoneNumbers isimli bir sözlüğüm var ancak ben bunu çağırırken uzun uzun phoneNumbers yazmak istemiyorum. Örneğe bakalım.

Bunun için contacts isimli bir değişken tanımlıyorum ve bu değişkenin değerini 'phoneNumbers.copy' olarak veriyorum. Bu sayede ben, contacts değişkenini çağırınca da phoneNumbers üyeleri önüme gelecektir. Kısacası; "phoneNumbers sözlüğünü contacts değişkenine kopyala" diyorum.

get()

Anlamı 'almak' şeklindedir. Bu fonksiyon, bir adet key parametresi alır. Yani get() parantezleri arasına sözlükte bulunan bir key değeri verirseniz o key'in karşılığı olan value ekranınıza düşecektir. Bakalım.

Gördüğünüz gibi get("Cyber") ifadesini verdim ve sözlükte "Cyber" anahtarına ait değeri bana getirdi.

Peki, sözlükte olmayan bir key değeri girersek ne olur?

'None' değeri döndürüldü. Yani bu sözlükte 'CyberWorm' diye bir key yok.

get() fonksiyonunun alternatifi de vardır. Bunu göstermemin sebebi, başka yerlerde gördüğünüzde "bu ne yapmış?" dememenizi istediğimdendir. Ancak size, kodunuzun okunabilirliği açısından get() fonksiyonunu kullanmaya devam etmenizi önerebilirim.

Listelerdeki gibi; direkt olarak contacts["Cyber"] şeklinde çağırabiliyoruz. İçeri verdiğimiz key değerinin value değeri önümüze gelecektir. Ancak listelerdeki gibi index ile değil, key değerini veriyoruz.

items()

Bu fonksiyon, bir sözlükte bulunan anahtar ve değerlerinin tümünü yazdıracaktır.

keys()

Bu fonksiyon, sözlük içerisindeki bütün key'leri karşınıza getirecektir.

values()

Bu fonksiyon ise sözlük içerisindeki bütün value'ları karşınıza getirecektir.

pop()

Bu fonksiyon sayesinde bir key değerini sözlükten çıkarabilirsiniz. Key değeri çıktığı için key'in value değeri de ortadan kaldırılacaktır.

İlk önce contacts.pop("Cyber") ifadesini verdim ve "Cyber" key'i ile sahip olduğu value sözlükten çıkarıldı. O değeri çıkardıktan sonra print(contacts) yazıp sözlüğün güncel hâlini yazdırıyorum. Gördüğünüz üzere sözlüğün güncel hâlinde "Cyber" ifadesi bulunmuyor.

del[[]]

Bu, sözlüklere özel bir fonksiyon değildir. pop() ile eleman çıkarmak ile benzer bir işi yapar. Aldığı key değerini sözlükten siler; 'delete' yani 'silmek' kelimesinden gelir.

Ancak burada unutmamanız gereken şey, köşeli parantezlerin kullanıldığıdır. del anahtar kelimesini verdikten sonra bir köşeli parantez açıyoruz ve sözlüğün adını veriyoruz. Hemen sonrasında bir köşeli parantez daha açıyoruz ve bu sefer bir key değeri veriyoruz.

update()

Bu fonksiyonu belli koşullar doğrultusunda sözlüğü güncellemek için kullanıyoruz. Syntax yapısı biraz değişiktir.

İlk önce normal bir şekilde tanımlıyoruz.

contacts.update()

Sonrasında parantezler arasına bir köşeli parantez açıyoruz.

contacts.update([])

Bunu yaptıktan sonra bir normal parantez daha açıyoruz ve değerlerimizi öyle giriyoruz.

contacts.update([()])

Ancak burada her zamanki gibi bir tanımlama yapmıyoruz. Burada key ve value değerlerini ayıran şey iki nokta üst üste değil, virgül olmalıdır.

contacts.update([('key', 'value')])

Yukarıda gösterdiğim gibi bir tanımlama yaptım; 'update([("B", "2222 222 22 22")])'. Sonrasında contacts.item() ifadesini vererek ve tüm sözlüğü görüntülediğimde tanımladığım ifadenin de sözlükte yer aldığını gördüm.


Yayınlanma Tarihi: 2022-10-30 14:47:10

Son Düzenleme Tarihi: 2022-11-02 15:19:22