Menu

Python Sözlükleri: dict Oluşturma, Erişim, Güncelleme ve İterasyon

Sözlükler, Python'ın anahtar-değer arama yapısıdır — temelleri aştıktan sonra sürekli başvuracağın veri tipidir.

Bu sayfada çalıştırılabilir editörler var — düzenle, çalıştır ve sonucu anında gör.

Sözlük Bir Arama Tablosudur

Listeler konuma göre indekslenir. Sözlükler ise anahtara göre indekslenir — genellikle bir string ya da sayı — ve her anahtar bir değere eşlenir. Bu tek kayma büyük bir program kategorisinin kilidini açar: envanterler, konfigürasyonlar, JSON payload'ları, kullanıcı profilleri, önbellekler.

Anahtarlar ve değerler neredeyse her şey olabilir. Anahtarlar hashlenebilir olmalı (yani: sayılar, stringler, tuple'lar; listeler ya da başka dict'ler değil). Değerlerde bir kısıtlama yoktur — bir dict, başka dict'ler veya listeler dahil her şeyi tutabilir.

Sözlük Oluşturmak

Birkaç yol, her biri yerinde:

Değerleri Okumak

İki yol var ve seçim önemli:

Niyete göre seç:

  • [] kullan anahtar orada olmak zorundaysa. Yoksa, bu bir hatadır ve sesli bir hata mesajı istersin.
  • .get() kullan "yok" geçerli bir durumsa. try/except olmadan varsayılan yazmanı sağlar.

Ekleme, Güncelleme, Silme

Bir anahtara atamak ya onu oluşturur ya da günceller:

update() başka bir dict'i ya da çift iterable'ını birleştirir:

overrides içindeki ortak anahtarlar, settings içindekilerin üzerine yazılır.

Bir Anahtarı Kontrol Etmek

in anahtarları kontrol eder, değerleri değil:

Özellikle değerleri kontrol etmek için user.values() kullan:

Sözlük Üzerinde İterasyon

Üzerinde döngü kurabileceğin üç görünüm var:

Çoğu zaman başvuracağın .items()'dır — paketlenmiş çifti, kullanıma hazır şekilde verir.

Modern Python'da (3.7+) iterasyon sırası ekleme sırasıyla eşleşir. Bir dict "sihirli bir torba" değildir — önce a, sonra b, sonra c eklersen, iterasyon onları bu sırada verir. Bu, güvenebileceğin bir dil garantisidir.

Sözlüğü Nasıl Sıralarsın

Sözlükler ekleme sırasını korur, dolayısıyla bir dict'i "sıralamak" aslında anahtarları istediğin sırada eklenmiş yeni bir dict inşa etmek demektir:

sorted() bir çiftler listesi döner; bunu dict(...) ile sararak yeni sıralamayla bir sözlüğü yeniden inşa edersin. Yalnızca sıralı çiftlere ihtiyacın varsa (dict değil) dıştaki dict() çağrısını atla.

İki Sözlüğü Birleştirmek

Python 3.9+ sana | operatörünü verir:

Anahtar çakışmalarında sağdaki dict'in değerleri kazanır. .update() onun yerinde eşdeğeridir. Daha eski Python sürümlerinde {**defaults, **overrides} kullan.

setdefault Kalıbı

Yaygın bir ihtiyaç: "anahtar varsa değerini kullan; yoksa bir varsayılan ayarla ve sonra kullan."

Ya da daha iyisi, collections.Counter kullan:

Counter, varsayılan olarak sayma yapan bir dict alt sınıfıdır. Ne zaman olay sayısını sayıyorsan doğru seçim odur.

Dictionary Comprehension'lar

List comprehension'larla paralel, ama dict inşa etmek için:

Aynı kurallar, ama süslü parantezlerin içinde key: value ile.

Dict JSON'un İkizidir

Python dict'leri JSON nesneleriyle neredeyse bire bir hizalanır. Aralarında dönüşüm tek bir çağrıdır:

Bu yüzden dict'ler web çalışmalarında her yerde karşına çıkar — API istek ve yanıtların temelde arada ağ olan dict manipülasyonudur.

Pratik Bir Örnek

Bir kullanıcı profilini takip eden minik bir konfigürasyon benzeri program:

İç içe dict'ler, değiştirilebilir değerler, varsayılanla .get() — kayıt biçimli herhangi bir veri için temel araç seti.

Devam

Listeler, tuple'lar, set'ler, dict'ler. Bu dört koleksiyon elinde olduğunda, erken dönemde karşılaşacağın hemen her veriyi modelleyebilirsin. Sırada list comprehension'ı öğreneceğiz — Python'un bir koleksiyonu bir diğerine dönüştürmenin kompakt yolu.

Sıkça Sorulan Sorular

Python'da sözlük nedir?

Sözlük, anahtar-değer çiftlerinden oluşan bir koleksiyondur. Bir değeri anahtarına göre ararsın — prices[0] yerine prices['apple']. Sözlüklerin okuma ve yazması hızlıdır, anahtarlar benzersiz olmalıdır ve modern Python'da ekleme sırasını korurlar.

Python sözlüğüne nasıl anahtar eklerim?

Ona atama yap: my_dict['new_key'] = 'new value'. Anahtar zaten varsa değer üzerine yazılır. Yoksa eklenir. "Ekleme" ve "güncelleme" arasında fark yoktur — aynı söz dizimidir.

dict[key] ile dict.get(key) arasındaki fark nedir?

Anahtar yoksa dict[key] KeyError fırlatır. dict.get(key) ise onun yerine None (ya da verdiğin bir varsayılan) döndürür. Eksik anahtarlar beklenen ve normal bir durumsa .get() kullan; eksik bir anahtar bir hatayı işaret ediyorsa [key] kullan.

Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA