Python

Python’da Sözlük (dict) Kullanımı

Python'da Sözlük (dict) Kullanımı

Python programlama dilinde verileri organize etmek, saklamak ve hızlı bir şekilde işlemek için farklı veri yapıları kullanılır. Bu yapılar arasında yer alan sözlükler, verileri indeks numaraları yerine anlamlı etiketlerle saklama imkanı tanıyarak yazılım geliştirme süreçlerinde kritik bir rol oynar. Python sözlük yapısı, büyük veri yığınları içinde arama yaparken sunduğu performans ve esneklik ile listeler veya demetlerden ayrılır.

Sözlük (dict) Nedir ve Nasıl Çalışır?

Python sözlük tipi, verileri anahtar-değer (key-value) çiftleri halinde depolayan, değiştirilebilir (mutable) bir veri yapısıdır. Sözlükler sıralı (ordered) bir yapıya sahiptir; yani eklenen elemanların sırası Python 3.7 sürümünden itibaren korunur.

Sözlüklerin temel çalışma prensibi, arka plandaki karma (hash table) mekanizmasına dayanır. Bir listeye erişmek için sayısal bir indeks gerekirken, sözlüklerde doğrudan tanımladığınız anahtar kullanılır. Bu yapı sayesinde veriye erişim hızı, veri kümesinin büyüklüğünden bağımsız olarak neredeyse sabittir.

Sözlük kullanırken dikkat edilmesi gereken iki temel kural bulunur:

  • Anahtarlar (keys) benzersiz (unique) olmak zorundadır. Aynı anahtar birden fazla kez tanımlanırsa son verilen değer geçerli olur.
  • Anahtarlar değiştirilemez (immutable) veri tiplerinden seçilmelidir. Metinler (str), sayılar (int, float) veya demetler (tuple) anahtar olabilirken; listeler (list) veya başka sözlükler anahtar olarak kullanılamaz.
  • Değerler (values) ise herhangi bir veri tipinde olabilir, tekrar edebilir ve değiştirilebilir.

Sözlük Tanımlama Yöntemleri

Python’da bir sözlük oluşturmanın en yaygın yolu süslü parantez {} kullanmaktır. Alternatif olarak yerleşik dict() fonksiyonu da tercih edilebilir.

kullanici = {
    "kullanici_adi": "ykaytan",
    "rol": "admin",
    "aktif": True,
    "giris_sayisi": 14
}

sunucu = dict(ip="192.168.1.1", port=8080, durum="aktif")

bos_sozluk_1 = {}
bos_sozluk_2 = dict()

Yukarıdaki ilk örnekte süslü parantezler kullanılarak farklı veri tiplerini barındıran bir kullanıcı sözlüğü tanımlanmıştır. İkinci örnekte ise dict() fonksiyonuna parametreler verilerek anahtarları metin olan bir sunucu yapılandırması oluşturulmuştur.

Sözlük Elemanlarına Erişim

Sözlüklerde saklanan değerlere erişmek için iki temel yöntem vardır: köşeli parantez gösterimi ve get() metodu.

Köşeli Parantez ile Erişim

En doğrudan yöntem, sözlük değişkeninin yanına köşeli parantez içinde aranan anahtarın adını yazmaktır.

ag_cihazi = {
    "hostname": "router-core-01",
    "ip": "10.0.0.1",
    "model": "Cisco 2901"
}

print(ag_cihazi["hostname"])

Bu yöntemde aranan anahtar sözlükte bulunmuyorsa Python derleyicisi KeyError hatası fırlatır ve programın çalışması durur. Bu nedenle dinamik veya dışarıdan gelen verilerde bu yaklaşım risk taşıyabilir.

get() Metodu ile Güvenli Erişim

Hata yönetimini kolaylaştırmak ve uygulamanın beklenmedik şekilde çökmesini engellemek için get() metodu kullanılır.

ag_cihazi = {
    "hostname": "router-core-01",
    "ip": "10.0.0.1"
}

lokasyon = ag_cihazi.get("lokasyon")
print(lokasyon)

port = ag_cihazi.get("port", 22)
print(port)

get() metoduna verilen anahtar sözlükte yoksa metot hata üretmek yerine None döner. Ayrıca ikinci bir parametre verilerek, anahtarın bulunamadığı durumlarda dönülecek varsayılan bir değer tanımlanabilir. Örnekte port bilgisi sözlükte olmadığı için tanımlanan varsayılan değer olan 22 elde edilmiştir.

Sözlük Verilerini Güncelleme ve Eleman Ekleme

Sözlükler değiştirilebilir yapıda oldukları için çalışma anında yeni çiftler eklenebilir veya var olan değerler güncellenebilir.

profil = {
    "ad": "Ahmet",
    "seviye": 2
}

profil["eposta"] = "ahmet@example.com"
profil["seviye"] = 3

profil.update({"sehir": "Ankara", "durum": "aktif"})

print(profil)

Köşeli parantezle belirtilen anahtar sözlükte mevcut değilse yeni bir eleman olarak eklenir; eğer mevcutsa eski değerin üzerine yazılır. update() metodu ise birden fazla anahtar-değer çiftini tek seferde eklemek veya güncellemek için idealdir.

Sözlükten Eleman Silme Yöntemleri

Python sözlük yapısında eleman silmek için amaca göre farklı yaklaşımlar mevcuttur:

  • del ifadesi: Belirtilen anahtarı ve değerini sözlükten tamamen kaldırır. Anahtar yoksa KeyError verir.
  • pop() metodu: Belirtilen anahtarı siler ve silinen değeri geriye döndürür. İsteğe bağlı olarak varsayılan bir değer alabilir.
  • popitem() metodu: Sözlüğe son eklenen anahtar-değer çiftini siler ve bu ikiliyi bir demet (tuple) olarak döndürür.
  • clear() metodu: Sözlüğün içindeki tüm elemanları temizler ve geriye boş bir sözlük bırakır.
ayarlar = {
    "tema": "koyu",
    "bildirimler": True,
    "dil": "tr",
    "otomatik_kayit": False
}

silinen_tema = ayarlar.pop("tema")
print(silinen_tema)

son_eklenen = ayarlar.popitem()
print(son_eklenen)

del ayarlar["dil"]

ayarlar.clear()
print(ayarlar)

Bu örnekte pop() ile “tema” silinip değeri bir değişkende saklanmış, popitem() ile sözlüğün sonundaki eleman çıkarılmış, del ile “dil” kaldırılmış ve son olarak clear() ile kalan tüm yapı sıfırlanmıştır.

Döngüler ile Sözlükler Üzerinde Gezinme

Sözlüklerdeki verileri işlemek için for döngüleri kullanılır. İhtiyaca göre sadece anahtarlar, sadece değerler ya da her ikisi birden taranabilir.

servisler = {
    "ssh": 22,
    "http": 80,
    "https": 443
}

for anahtar in servisler.keys():
    print("Servis adı:", anahtar)

for deger in servisler.values():
    print("Port numarası:", deger)

for servis, port in servisler.items():
    print(servis, "servisi", port, "portunu kullaniyor.")

Burada keys() sözlük anahtarlarını, values() değerleri, items() ise her iki bileşeni ikili demetler halinde döner. Döngü içinde doğrudan iki değişkene atama (unpacking) yapılması, kodun okunabilirliğini önemli ölçüde artırır.

Özet ve Sonraki Adımlar

Python sözlük veri yapısı, anahtar-değer eşlemesi ve arama algoritmalarındaki sabit zamanlı performansı sayesinde yazılım geliştirmede vazgeçilmez bir araçtır. Bu yazıda sözlük tanımlama mantığını, veri okuma tekniklerini, güncelleme, silme ve döngülerle gezinme adımlarını ele aldık.

Sonraki aşamada sözlükleri tek satırda filtreleyip dönüştürmenizi sağlayan sözlük üreteçlerini (dictionary comprehensions) ve daha karmaşık veri modelleri tasarlamak için iç içe (nested) sözlük yapılarını inceleyebilirsiniz.

#programlama temelleri#python#python sozluk#veri yapıları#yazılım geliştirme

Kommentare

Noch keine Kommentare. Schreiben Sie den ersten.

Kommentar schreiben

Kommentare werden nach Freigabe durch den Admin veröffentlicht.