Python - Sözlükler
Listelerdeki değerler dizi mantığıyla çalışıyordu. Yani her elemanın index numarası ve değeri vardı. Dolayısıyla sıralı ve kapalı bir yapıdaydı. Sözlüklerde veriler anahtar - değer ilişkisiyle tutulur. Anahtarlar bir nevi listelerdeki index numaraları yerine geçer ancak sözlükler sıralı bir yapıda değildir.
Sözlükler (Dictionaries)
JSON duydunuz mu hiç? Ya da javascript objeleri ile çalıştınız mı? Python'da sözlükler tıpkı bunlar gibidir. Küme parantezleriyle tanımlanır ve parantezler içine anahtarlar (key) ve değerler (value) girilir. Aşağıda örnek tanımlamaları görüyorsunuz.
bos = {} dolu = { "anahtar": "değer"}
Sözlük anahtarları string olmalıdır ancak değerler herhangi bir tipte olabilir. Bir sözlüğü direkt print
ederseniz tüm değerlerini görebilirsiniz.
#!/usr/bin/python #-*- coding:utf-8 -*- ogrenci = { "ad": "umut", "soyad": "coşkun", "no": 2012230, "mezun": False } print ogrenci
Sözlük içindeki bir anahtarın değerine ulaşmak için köşeli parantezler []
içine anahtar yazılır.
ogrenci = { "ad": "umut", "soyad": "coşkun", "no": 2012230, "mezun": False } print ogrenci["ad"]
Farklı tiplerde değişken kullandıysanız bir metinle birleştirip yazdırmadan önce str
fonksiyonuyla string tipine çevirmelisiniz.
ogrenci = { "ad": "umut", "soyad": "coşkun", "no": 2012230, "mezun": False } print "Adı: " + ogrenci["ad"] print "Soyadı: " + ogrenci["soyad"] print "Okul Numarası: " + str(ogrenci["no"])
Aşağıda öğrencinin okulu bitirme durumuna göre iki farklı mesaj gösterdik.
#!/usr/bin/python #-*- coding:utf-8 -*- ogrenci = { "ad": "umut", "soyad": "coşkun", "no": 2012230, "mezun": False } print("Merhaba, {} {}. ".format(ogrenci["ad"], ogrenci["soyad"])) if ogrenci["mezun"]: print("Okulu bitirdin. Okul numaranı hatırlıyor musun?") print("Numaran: {}".format(ogrenci["no"])) else: print("Sürünmeye devam...")
Format fonksiyonu string içindeki {}
karakterlerinin yerini değişkenlerle doldurmak için kullanılır. İşaretlenen yerlere sırasıyla parametre olarak verilen değişkenler yerleştirilir. Eğer ilk defa gördüyseniz biraz dikkatli inceleyin ve alışkanlık haline getirin.
Değer Atama
Bir anahtarın değerini değiştirmek için yine eşittir =
kullanılır.
ogrenci = { "ad": "umut", "soyad": "coşkun" } print("Öğrenci adı: {}".format(ogrenci["ad"])) ogrenci["ad"] = "çağdaş" print("Öğrenci yeni adı: {}".format(ogrenci["ad"]))
Değer atamak için bir anahtarın oluşturulma esnasında belirlenmiş olması gerekmez. Önceden var olmayan bir anahtara değer verirseniz otomatik olarak oluşur.
ogrenci = { "ad": "umut", "soyad": "coşkun" } ogrenci["kurum"] = "akdeniz universitesi" print ogrenci["kurum"]
Değer Silme
Sözlük içindeki bir anahtarı komple silmek (boşaltmak değil) istiyorsanız del
komutunu kullanabilirsiniz. Örneğin aşağıdaki örnekte soyad anahtarını sildikten sonra yazdırmaya çalıştığımız için KeyError
yani anahtar hatası oluşur. Bu hata sadece silinenler için değil, hiç var olmayan anahtarlar için de aynıdır.
ogrenci = { "ad": "umut", "soyad": "coşkun" } del ogrenci["soyad"] print ogrenci["soyad"]
Tüm anahtarları ve değerleri silmek için clear
methodunu kullanabiliriz.
ogrenci = {"ad": "umut" } print ogrenci ogrenci.clear() print ogrenci
Keys ve Values Methodları
Tahmin edeceğiniz keys sözlük içindeki anahtarları, values değerleri bir liste olarak döndürür. Aşağıdaki örnekte direkt yazdırarak ya da döngü ile kullanarak bir örnek yaptık.
#!/usr/bin/python #-*- coding:utf-8 -*- sepet = { "makarna": 2, "ekmek": 1, "sigara": 8 } print("Sepetinizdeki ürünler: ") print(sepet.keys()) toplam = 0 for fiyat in sepet.values(): toplam += fiyat print("Toplam fiyat: {} TL".format(toplam))
Listeleme
Sözlük içindeki items methodu tüm anahtar ve değerleri liste olarak döndürür. Bu sayede sözlük içindeki tüm öğeleri öğrenebiliriz.
sepet = { "makarna": 2, "ekmek": 1, "sigara": 8 } print("-- Fiyatlar") for urun, fiyat in sepet.items(): print ("{} fiyatı: {} TL".format(urun, fiyat))
Anahtar Kontrolü
Sözlük içindeki bir anahtarın var olup olmadığını get
ve has_key
methodları ile yaparız. Get methoduna iki parametre verilir; ilki anahtar adı ikincisi anahtarın bulunamaması halinde dönecek varsayılan değer. Anahtarın var olup olmadığını has_key
ile kontrol ederiz. Geriye True / False değer döndürür.
#!/usr/bin/python #-*- coding:utf-8 -*- urunler = { "makarna": 2, "ekmek": 1, "sigara": 8 } if urunler.has_key("yumurta"): print("Yumurta fiyatı: {} TL".format(urunler["yumurta"])) else: print("Yumurta kalmadı.") print("makarna: {}".format(urunler.get("makarna", "kalmadı"))) print("kahve: {}".format(urunler.get("kahve", "kalmadı")))
Şimdilik bu kadar. İsterseniz şuradaki ve şuradaki sayfalara göz atabilirsiniz.
Devam et: Demetler