Sözlükler hakkında detaylı bilgiyi bir üst başlıkta zaten vermiştik. Bu bölümde sözlüklere ait bazı fonksiyonları göreceğiz.
Bu fonksiyon ilgili sözlüğün anahtarlarını ekrana bastırır.
>>> sözlük = {"a": 0,
... "b": 1,
... "c": 2,
... "d": 3}
>>> print(sözlük.keys())
dict_keys(['b', 'c', 'a', 'd'])
Gördüğünüz gibi, sözlük.keys()
komutu bize bir dict_keys nesnesi veriyor. Bu nesneyi programınızda kullanabilmek için isterseniz, bunu listeye, demete veya karakter dizisine dönüştürebilirsiniz.
>>> liste = list(sözlük.keys())
>>> liste
['b', 'c', 'a', 'd']
>>> demet = tuple(sözlük.keys())
>>> demet
('b', 'c', 'a', 'd')
>>> kardiz = "".join(sözlük.keys())
>>> kardiz
'bcad'
Son örnekte sözlük anahtarlarını karakter dizisine dönüştürmek için str()
fonksiyonunu değil, karakter dizilerinin join()
adlı metodunu kullandığımıza dikkat edin. Çünkü tuple()
ve list()
fonksiyonlarının aksine str()
fonksiyonu, sözlükteki anahtarların nasıl bir ölçüte göre karakter dizisine çevrileceğine dair bir kural içermez.
keys()
metodu bir sözlüğün anahtarlarını veriyor. Bir sözlüğün değerlerini ise values()
metodu verir.
>>> sözlük
{'b': 1, 'c': 2, 'a': 0, 'd': 3}
>>> print(sözlük.values())
dict_values([1, 2, 0, 3])
Gördüğünüz gibi, bu metottan bir dict_values nesnesi alıyoruz. Tıpkı keys()
metodunda olduğu gibi, values()
metodunda da bu çıktıyı başka veri tiplerine dönüştürme imkanına sahibiz.
>>> liste = list(sözlük.values())
>>> liste
[1, 2, 0, 3]
>>> demet = tuple(sözlük.values())
>>> demet
(1, 2, 0, 3)
Bu metot, bir sözlüğün hem anahtarlarını hem de değerlerini aynı anda almamızı sağlar.
>>> sözlük.items()
dict_items([('a', 0), ('c', 2), ('b', 1)])
Gördüğünüz gibi, tek bir liste içinde iki öğeli demetler halinde hem anahtarları hem de değerleri görebiliyoruz.
Bu metot sözlüklerin en kullanışlı metotlarından biridir. Bu metot pek çok durumda işinizi bir hayli kolaylaştırır.
Diyelim ki şöyle bir program yazdık:
#!/usr/bin/env python3.0
ing_sözlük = {"dil": "language", "bilgisayar": "computer", "masa": "table"}
sorgu = input("Lütfen anlamını öğrenmek istediğiniz kelimeyi yazınız:")
print(ing_sözlük[sorgu])
Bu programı çalıştırdığımızda eğer kullanıcı “ing_sözlük” adıyla belirttiğimiz sözlük içinde bulunan kelimelerden birini yazarsa, o kelimenin karşılığını alacaktır. Diyelim ki kullanıcımız soruya “dil” diye cevap verdi. Bu durumda ekrana “dil” kelimesinin sözlükteki karşılığı olan “language” yazdırılacaktır. Peki ya kullanıcı sözlükte tanımlı olmayan bir kelime yazarsa ne olacak? Öyle bir durumda programımız hata verecektir. Programımız için doğru yol, hata vermektense, kullanıcıyı kelimenin sözlükte olmadığı konusunda bilgilendirmektir. Bunu klasik bir yaklaşımla şu şekilde yapabiliriz:
ing_sözlük = {"dil": "language", "bilgisayar": "computer", "masa": "table"}
sorgu = input("Lütfen anlamını öğrenmek istediğiniz kelimeyi yazınız:")
if sorgu not in ing_sözlük:
print("Bu kelime veritabanımızda yoktur!")
else:
print(ing_sözlük[sorgu])
Ama açıkçası bu pek verimli bir yaklaşım sayılmaz. Yukarıdaki yöntem yerine sözlüklerin get()
metodundan faydalanabiliriz. Bakalım bunu nasıl yapıyoruz:
ing_sözlük = {"dil": "language", "bilgisayar": "computer", "masa": "table"}
sorgu = input("Lütfen anlamını öğrenmek istediğiniz kelimeyi yazınız:")
print(ing_sözlük.get(sorgu, "Bu kelime veritabanımızda yoktur!"))
Gördüğünüz gibi, burada çok basit bir metot yardımıyla bütün dertlerimizi hallettik. Sözlüklerin get()
adlı metodu, parantez içinde iki adet argüman alır. Birinci argüman sorgulamak istediğimiz sözlük öğesidir. İkinci argüman ise bu öğenin sözlükte bulunmadığı durumda kullanıcıya hangi mesajın gösterileceğini belirtir. Buna göre, yukarıda yaptığımız şey, önce “sorgu” değişkenini sözlükte aramak, eğer bu öğe sözlükte bulunamıyorsa da kullanıcıya, “Bu kelime veritabanımızda yoktur!” cümlesini göstermekten ibarettir...
Bu kelime İngilizce’de “temizlemek” anlamına gelir. Görevi sözlükteki öğeleri temizlemektir. Yani içi dolu bir sözlüğü bu metot yardımıyla tamamen boşaltabiliriz:
>>> lig = {"şampiyon": "Adana Demirspor", "ikinci": "Mersin İdman Yurdu",
... "üçüncü": "Adana Gençlerbirliği"}
İsterseniz sözlüğümüzü boşaltmadan önce bu sözlükle biraz çalışalım:
Sözlüğümüzün öğelerine şöyle ulaşıyoruz:
>>> lig
{'şampiyon': 'Adana Demirspor', 'ikinci': 'Mersin İdman Yurdu',
'üçüncü': 'Adana Gençlerbirliği'}
Eğer bu sözlüğün öğelerine tek tek erişmek istersek şöyle yapıyoruz:
>>> lig["şampiyon"]
'Adana Demirspor'
>>> lig["üçüncü"]
'Adana Gençlerbirliği'
Şimdi geldi bu sözlüğün bütün öğelerini silmeye:
>>> lig.clear()
Şimdi sözlüğümüzün durumunu tekrar kontrol edelim:
>>> lig
{}
Gördüğünüz gibi artık “lig” adlı sözlüğümüz bomboş. clear()
metodunu kullanarak bu sözlüğün bütün öğelerini sildik.