Resim

Python Sözlükleri (Dictionaries)

Python Sözlükleri (Dictionaries)

Veriye İsim Vermek

Merhaba! Listeler, Tuple'lar ve Setler, veriyi index numarası veya sırasız bir koleksiyon halinde saklar. Ancak, gerçek dünyadaki verilerde genellikle bir tanımlayıcı (isim, ID numarası) ile bir değer (yaş, şehir, fiyat) eşleştirilir.

Sözlükler (Dictionaries), Python'da bu tür eşleştirmeleri depolamak için kullanılan yapıdır. Her öğe, bir Anahtar (Key) ve bu anahtara karşılık gelen bir Değer (Value) çiftinden oluşur. Bu yapı, veriye ismini kullanarak hızlıca erişmeyi sağlar.

Bu yazıda, sözlüklerin nasıl tanımlandığını, öğelere nasıl erişildiğini ve en önemlisi, sözlük öğelerini yönetmek için kullanılan güçlü metotları öğreneceğiz.


1. Sözlük Tanımlama ve Özellikleri

Sözlükler, öğelerin süslü parantezler ({}) içine alınmasıyla oluşturulur. Her öğe, bir anahtar, ardından iki nokta üst üste (:) ve ardından değeri ile belirtilir.

a. Temel Özellikler

  1. Anahtar-Değer Çiftleri: Veri anahtar: değer formatında saklanır.

  2. Sıralı (Python 3.7+): Sözlükler, Python 3.7'den itibaren eklenme sırasını korur (eski versiyonlarda sırasızdı).

  3. Değiştirilebilir (Mutable): Yeni öğe eklenebilir, var olan değerler değiştirilebilir veya silinebilir.

  4. Benzersiz Anahtarlar: Bir sözlükte aynı anahtardan yalnızca bir tane olabilir.

  • Örnek Tanımlama:

    kullanici = {
        "ad": "Gizem",
        "yas": 28,
        "meslek": "Mühendis",
        "aktif": True
    }
    

b. Anahtar Kuralları

  • Değişmezlik: Sözlük anahtarları değiştirilemez (immutable) veri türleri (string, int, tuple) olmalıdır. Listeler veya Setler anahtar olamaz.

  • Değerler: Değerler ise herhangi bir veri türü (liste, sözlük, fonksiyon dahil) olabilir.

2. Sözlük Öğelerine Erişim

Listeler ve tuple'larda index numarası kullanılırken, sözlüklerde öğelere erişmek için anahtarları kullanırız.

a. Köşeli Parantez Kullanımı (Standart Yöntem)

En yaygın erişim yöntemidir. Eğer anahtar sözlükte yoksa KeyError hatası fırlatır.

kullanici = {"ad": "Gizem", "yas": 28}
isim = kullanici["ad"]
print(isim) # Çıktı: Gizem
# print(kullanici["sehir"]) # HATA: KeyError

b. .get() Metodu (Güvenli Yöntem)

Anahtar bulunamazsa hata fırlatmak yerine None değeri döndürür. İsteğe bağlı olarak, anahtar bulunamazsa döndürülecek varsayılan bir değer belirleyebilirsiniz.

sehir = kullanici.get("sehir", "Bilinmiyor")
print(sehir) # Çıktı: Bilinmiyor

Kendiniz Deneyebilirsiniz:


3. Sözlük Öğelerini Yönetme (Ekleme, Güncelleme, Silme)

Sözlükler değiştirilebilir olduğu için öğe eklemek, güncellemek ve silmek çok kolaydır.

a. Ekleme ve Güncelleme

Yeni bir anahtar-değer çifti eklemek veya var olan bir anahtarın değerini güncellemek için aynı söz dizimi kullanılır:

kullanici = {"ad": "Gizem", "yas": 28}
# Ekleme (Yeni anahtar)
kullanici["sehir"] = "Ankara"
# Çıktı: {'ad': 'Gizem', 'yas': 28, 'sehir': 'Ankara'}
# Güncelleme (Var olan anahtar)
kullanici["yas"] = 29
# Çıktı: {'ad': 'Gizem', 'yas': 29, 'sehir': 'Ankara'}

b. Silme Metotları

  • pop(anahtar): Belirtilen anahtarı ve değerini siler, sildiği değeri döndürür. Anahtar yoksa hata verir.

    silinen_meslek = kullanici.pop("meslek")
  • del anahtar kelimesi: Belirtilen anahtarı siler veya sözlüğün tamamını siler.

    del kullanici["aktif"]
    del kullanici # Sözlüğün tamamını siler (değişkeni yok eder)
  • clear(): Sözlüğün içindeki tüm öğeleri siler (sözlük boş kalır).

    kullanici.clear()
Kendiniz Deneyebilirsiniz:


4. Sözlük Görünümleri (Views) ve Döngü

Sözlükler üzerinde döngü kurmak için kullanılabilecek üç ana yöntem vardır. Bu metotlar, dinamik olarak değişen görünümler (views) döndürür.

  • .keys(): Sözlükteki tüm anahtarları döndürür.

  • .values(): Sözlükteki tüm değerleri döndürür.

  • .items(): Sözlükteki tüm (anahtar, değer) çiftlerini döndürür.

Örnek Döngü:

personel = {"id": 101, "pozisyon": "Yazılımcı"}
# Anahtarlar ve Değerler üzerinde döngü
for anahtar, deger in personel.items():
    print(f"Anahtar: {anahtar}, Değer: {deger}")
# Çıktı:
# Anahtar: id, Değer: 101
# Anahtar: pozisyon, Değer: Yazılımcı

Kendiniz Deneyebilirsiniz:


5. Python - İç İçe Sözlükler (Nested Dictionaries)

Gerçek dünyadaki veriler nadiren tek bir düzlemde bulunur. Bir şehir, birden fazla mahalleye sahip olabilir; bir müşteri, birden fazla siparişe sahip olabilir. Bu hiyerarşik (ağaç yapısındaki) verileri modellemek için, bir sözlüğün değeri olarak başka bir sözlüğü kullanabiliriz. Buna İç İçe Sözlük (Nested Dictionary) denir.

İç içe sözlükler, JSON (JavaScript Object Notation) formatındaki web verilerini işlerken vazgeçilmezdir.

a. İç İçe Sözlük Tanımlama Örneği

Aşağıdaki örnekte, her bir şehir için ayrı bir sözlük tutulmaktadır ve bu sözlükler, ulkeler sözlüğünün değeri olarak atanmıştır.

ulkeler = {
    "Türkiye": {
        "Nüfus": 84,
        "Başkent": "Ankara",
        "Büyük Şehirler": ["İstanbul", "İzmir", "Bursa"]
    },
    "Almanya": {
        "Nüfus": 83,
        "Başkent": "Berlin",
        "Büyük Şehirler": ["Hamburg", "Münih"]
    }
}

b. İç İçe Öğelere Erişim

İç içe geçmiş verilere erişmek için, her seviye için ayrı bir köşeli parantez ([]) veya .get() metodu kullanılır.

  1. İlk Seviye Erişim: Ana sözlüğün anahtarına erişim.

    turkiye_bilgisi = ulkeler["Türkiye"]
    print(turkiye_bilgisi)
    # Çıktı: {'Nüfus': 84, 'Başkent': 'Ankara', 'Büyük Şehirler': ['İstanbul', 'İzmir', 'Bursa']}
  2. İkinci Seviye Erişim: İlk seviye sözlüğün içindeki bir anahtara erişim.

    turkiye_baskent = ulkeler["Türkiye"]["Başkent"]
    print(turkiye_baskent)
    # Çıktı: Ankara
  3. Üçüncü Seviye Erişim (Liste İçindeki Öğeye Erişim): İçteki sözlüğün değeri bir listeyse, listeye erişimden sonra listeye özgü index numarası kullanılır.

    ilk_buyuk_sehir = ulkeler["Türkiye"]["Büyük Şehirler"][0]
    print(ilk_buyuk_sehir)
    # Çıktı: İstanbul

c. İç İç Yapıyı Güncelleme

İç içe bir sözlüğün herhangi bir değerini güncellemek için, erişim yolunu takip ettikten sonra normal atama (=) operatörünü kullanırız.

# Almanya'nın nüfus bilgisini güncelleme
ulkeler["Almanya"]["Nüfus"] = 84
# Türkiye'ye yeni bir büyük şehir ekleme (Liste metodunu kullanma)
ulkeler["Türkiye"]["Büyük Şehirler"].append("Adana")
print(ulkeler["Türkiye"]["Büyük Şehirler"])
# Çıktı: ['İstanbul', 'İzmir', 'Bursa', 'Adana']

Kendiniz Deneyebilirsiniz:


6. Python Sözlük Yöntemleri (Metotları) 

Python Sözlükleri, anahtar-değer çiftlerini yönetmek, sorgulamak ve güncellemek için yerleşik metotlara sahiptir.

  1. clear(): Sözlüğün içindeki tüm anahtar-değer çiftlerini siler ve sözlüğü boş hale getirir.

  2. copy(): Sözlüğün sığ (shallow) bir kopyasını oluşturur ve bu yeni sözlüğü döndürür. (Orijinalinden bağımsız bir kopyadır.)

  3. fromkeys(anahtarlar, [değer]): Belirtilen anahtarlardan oluşan yeni bir sözlük oluşturur. Tüm anahtarlara isteğe bağlı olarak aynı varsayılan değeri atar (değer belirtilmezse None olur).

  4. get(anahtar, [varsayılan_değer]): Belirtilen anahtarın değerini döndürür. Eğer anahtar sözlükte yoksa hata vermek yerine None veya belirtilen varsayılan_değeri döndürür.

  5. items(): Sözlükteki tüm anahtar-değer çiftlerini (tuple'lar halinde) içeren bir görünüm (view object) döndürür.

  6. keys(): Sözlükteki tüm anahtarları içeren bir görünüm (view object) döndürür.

  7. pop(anahtar, [varsayılan_değer]): Belirtilen anahtara karşılık gelen çifti sözlükten siler ve silinen değeri döndürür. Anahtar bulunamazsa ve varsayılan_değer belirtilmemişse hata verir.

  8. popitem(): Sözlükten en son eklenen (Python 3.7+ için) anahtar-değer çiftini siler ve (anahtar, değer) tuple'ı olarak döndürür. Sözlük boşsa hata verir.

  9. setdefault(anahtar, [varsayılan_değer]): Belirtilen anahtar sözlükte varsa değerini döndürür. Yoksa, anahtarı sözlüğe ekler ve değer olarak varsayılan_değeri (varsayılan_değer belirtilmezse None) atar, ardından bu değeri döndürür.

  10. update(diğer_sözlük/iterable): Bir sözlüğün öğelerini başka bir sözlüğün (veya anahtar-değer çiftlerinden oluşan yinelenebilir bir yapının) öğeleriyle günceller. Ortak anahtarlar varsa değerleri günceller, yoksa yeni anahtarları ekler.

  11. values(): Sözlükteki tüm değerleri içeren bir görünüm (view object) döndürür.


Hızlı ve Yapısal Veri Depolama

Sözlükler, verileri yapısal ve anlamlı bir şekilde depolamanın en güçlü yoludur. Bir veriye ismini (anahtarını) kullanarak saniyeler içinde erişebilme yeteneği, sözlükleri Python programlamanın merkezine yerleştirir.

🔥 Python Kariyerinizi Hemen Başlatın!

Hemen kursumuza kaydolun ve bu güçlü araçları kullanarak profesyonel Python geliştiricisi olma yolunda ilk adımı atın. Kursumuzdaki uygulamalı modüller, sizi sadece bir yazılımcı adayı değil, hazır bir profesyonel haline getirecek. Python Eğitimini Udemy platformunda bulabilirsiniz.

[ Python Eğitimi Sıfırdan İleri Seviye ]

Tıklayın ve Python Eğitimine Hemen Kaydolun!

Yorumlar

Bu blogdaki popüler yayınlar

Python random Modülü

Python print()

Yazılım Nedir?