DEV Community

Vebende Akademi
Vebende Akademi

Posted on

Python Dictionary (Sözlük) Yapısı: Sıfırdan İleri Seviyeye Kapsamlı Rehber

Python Dictionary (Sözlük) Yapısı: Sıfırdan İleri Seviyeye Kapsamlı Rehber

Python'da veri yönetiminin temel taşlarından biri Dictionary (Sözlük) veri yapısıdır. Listeler verileri sıralı şekilde saklarken, dictionary yapıları verileri anahtar (key) - değer (value) mantığıyla saklar.

Gerçek dünyadaki birçok uygulamada dictionary kullanılır:

  • Kullanıcı bilgileri
  • JSON verileri
  • API yanıtları
  • Konfigürasyon dosyaları
  • Yapay zeka modellerinin parametreleri
  • Ürün katalogları
  • Cache sistemleri
  • Log kayıtları

Bir Python geliştiricisinin Dictionary yapısını çok iyi bilmesi gerekir çünkü modern Python uygulamalarının önemli bir bölümü dictionary temellidir.


Dictionary Nedir?

Dictionary, verileri anahtar ve değer çiftleri şeklinde saklayan veri yapısıdır.

ogrenci = {
    "ad": "Ahmet",
    "soyad": "Yılmaz",
    "yas": 22
}

print(ogrenci)
Enter fullscreen mode Exit fullscreen mode

Çıktı:

{'ad': 'Ahmet', 'soyad': 'Yılmaz', 'yas': 22}
Enter fullscreen mode Exit fullscreen mode

Dictionary Özellikleri

Dictionary:

  • Sıralıdır (Python 3.7+)
  • Değiştirilebilir (Mutable)
  • Anahtarlar benzersizdir
  • Değerler tekrar edebilir
  • Çok hızlı erişim sağlar

Dictionary Oluşturma

Temel Kullanım

personel = {
    "id": 1001,
    "ad": "Mehmet",
    "maas": 75000
}
Enter fullscreen mode Exit fullscreen mode

Boş Dictionary

veriler = {}
Enter fullscreen mode Exit fullscreen mode

veya

veriler = dict()
Enter fullscreen mode Exit fullscreen mode

Veri Okuma

kullanici = {
    "isim": "Ali",
    "yas": 30
}

print(kullanici["isim"])
Enter fullscreen mode Exit fullscreen mode

Çıktı:

Ali
Enter fullscreen mode Exit fullscreen mode

get() Kullanımı

Anahtar bulunamazsa hata vermez.

kullanici = {
    "isim": "Ali"
}

print(
    kullanici.get(
        "telefon",
        "Bulunamadı"
    )
)
Enter fullscreen mode Exit fullscreen mode

Çıktı:

Bulunamadı
Enter fullscreen mode Exit fullscreen mode

Veri Güncelleme

urun = {
    "ad": "Laptop",
    "fiyat": 25000
}

urun["fiyat"] = 30000

print(urun)
Enter fullscreen mode Exit fullscreen mode

Çıktı:

{'ad': 'Laptop', 'fiyat': 30000}
Enter fullscreen mode Exit fullscreen mode

Yeni Alan Eklemek

urun = {
    "ad": "Laptop"
}

urun["stok"] = 50

print(urun)
Enter fullscreen mode Exit fullscreen mode

Çıktı:

{'ad': 'Laptop', 'stok': 50}
Enter fullscreen mode Exit fullscreen mode

Veri Silmek

del

urun = {
    "ad": "Laptop",
    "stok": 50
}

del urun["stok"]

print(urun)
Enter fullscreen mode Exit fullscreen mode

pop()

urun = {
    "ad": "Laptop",
    "stok": 50
}

urun.pop("stok")

print(urun)
Enter fullscreen mode Exit fullscreen mode

Tüm İçeriği Temizlemek

urun = {
    "ad": "Laptop",
    "stok": 50
}

urun.clear()

print(urun)
Enter fullscreen mode Exit fullscreen mode

Çıktı:

{}
Enter fullscreen mode Exit fullscreen mode

Dictionary Uzunluğu

kisi = {
    "ad": "Ali",
    "yas": 25,
    "sehir": "İzmir"
}

print(len(kisi))
Enter fullscreen mode Exit fullscreen mode

Çıktı:

3
Enter fullscreen mode Exit fullscreen mode

Anahtarların Listelenmesi

kisi = {
    "ad": "Ali",
    "yas": 25,
    "sehir": "İzmir"
}

print(kisi.keys())
Enter fullscreen mode Exit fullscreen mode

Çıktı:

dict_keys(['ad', 'yas', 'sehir'])
Enter fullscreen mode Exit fullscreen mode

Değerlerin Listelenmesi

print(kisi.values())
Enter fullscreen mode Exit fullscreen mode

Çıktı:

dict_values(['Ali', 25, 'İzmir'])
Enter fullscreen mode Exit fullscreen mode

Anahtar-Değer Çiftleri

print(kisi.items())
Enter fullscreen mode Exit fullscreen mode

Çıktı:

dict_items([
 ('ad', 'Ali'),
 ('yas', 25),
 ('sehir', 'İzmir')
])
Enter fullscreen mode Exit fullscreen mode

Dictionary Üzerinde Dönmek

Anahtarlar

for key in kisi:
    print(key)
Enter fullscreen mode Exit fullscreen mode

Anahtar ve Değer

for key, value in kisi.items():
    print(key, value)
Enter fullscreen mode Exit fullscreen mode

Çıktı:

ad Ali
yas 25
sehir İzmir
Enter fullscreen mode Exit fullscreen mode

İç İçe Dictionary

Gerçek projelerde çok sık kullanılır.

firma = {
    "id": 1,
    "ad": "ABC Yazılım",
    "adres": {
        "sehir": "İzmir",
        "ulke": "Türkiye"
    }
}

print(
    firma["adres"]["sehir"]
)
Enter fullscreen mode Exit fullscreen mode

Çıktı:

İzmir
Enter fullscreen mode Exit fullscreen mode

Dictionary İçinde Liste

ogrenci = {
    "ad": "Ayşe",
    "notlar": [
        80,
        90,
        100
    ]
}

print(
    ogrenci["notlar"][1]
)
Enter fullscreen mode Exit fullscreen mode

Çıktı:

90
Enter fullscreen mode Exit fullscreen mode

Liste İçinde Dictionary

Veritabanı kayıtlarının temel yapısıdır.

personeller = [
    {
        "id": 1,
        "ad": "Ali"
    },
    {
        "id": 2,
        "ad": "Ayşe"
    }
]

print(personeller[1]["ad"])
Enter fullscreen mode Exit fullscreen mode

Çıktı:

Ayşe
Enter fullscreen mode Exit fullscreen mode

Dictionary Comprehension

List Comprehension kadar güçlüdür.

Kareler Tablosu

kareler = {
    x: x*x
    for x in range(1,11)
}

print(kareler)
Enter fullscreen mode Exit fullscreen mode

Çıktı:

{
1:1,
2:4,
3:9,
...
}
Enter fullscreen mode Exit fullscreen mode

Filtreleme

ciftler = {
    x: x*x
    for x in range(20)
    if x % 2 == 0
}

print(ciftler)
Enter fullscreen mode Exit fullscreen mode

Hands-On 1: Öğrenci Bilgi Sistemi

ogrenci = {
    "ad": "Mehmet",
    "soyad": "Demir",
    "yas": 21,
    "notlar": [70,85,95]
}

ortalama = (
    sum(ogrenci["notlar"])
    / len(ogrenci["notlar"])
)

print(
    f"Ortalama: {ortalama}"
)
Enter fullscreen mode Exit fullscreen mode

Hands-On 2: Kelime Frekans Analizi

metin = """
python veri bilimi python
yapay zeka python
"""

frekans = {}

for kelime in metin.split():

    if kelime in frekans:
        frekans[kelime] += 1
    else:
        frekans[kelime] = 1

print(frekans)
Enter fullscreen mode Exit fullscreen mode

Çıktı:

{
 'python':3,
 'veri':1,
 'bilimi':1,
 'yapay':1,
 'zeka':1
}
Enter fullscreen mode Exit fullscreen mode

Hands-On 3: Ürün Stok Takibi

stok = {
    "Laptop": 10,
    "Mouse": 25,
    "Klavye": 15
}

urun = "Mouse"

stok[urun] -= 1

print(stok)
Enter fullscreen mode Exit fullscreen mode

Hands-On 4: Maaş Hesaplama Sistemi

maaslar = {
    "Ali": 50000,
    "Ayşe": 70000,
    "Mehmet": 60000
}

ortalama = (
    sum(maaslar.values())
    /
    len(maaslar)
)

print(ortalama)
Enter fullscreen mode Exit fullscreen mode

Hands-On 5: API Yanıtı Simülasyonu

response = {
    "success": True,
    "data": {
        "id": 100,
        "ad": "Laptop",
        "fiyat": 35000
    }
}

print(
    response["data"]["ad"]
)
Enter fullscreen mode Exit fullscreen mode

Hands-On 6: Log Analizi

loglar = [
    "INFO",
    "ERROR",
    "INFO",
    "WARNING",
    "ERROR",
    "ERROR"
]

sonuc = {}

for log in loglar:

    sonuc[log] = (
        sonuc.get(log,0)
        + 1
    )

print(sonuc)
Enter fullscreen mode Exit fullscreen mode

Çıktı:

{
 'INFO':2,
 'ERROR':3,
 'WARNING':1
}
Enter fullscreen mode Exit fullscreen mode

setdefault()

Anahtar yoksa oluşturur.

ayarlar = {}

ayarlar.setdefault(
    "tema",
    "dark"
)

print(ayarlar)
Enter fullscreen mode Exit fullscreen mode

Çıktı:

{'tema': 'dark'}
Enter fullscreen mode Exit fullscreen mode

update()

Birden fazla alan güncellemek için kullanılır.

kisi = {
    "ad": "Ali"
}

kisi.update({
    "yas": 30,
    "sehir": "İzmir"
})

print(kisi)
Enter fullscreen mode Exit fullscreen mode

fromkeys()

alanlar = [
    "ad",
    "soyad",
    "email"
]

kayit = dict.fromkeys(
    alanlar,
    ""
)

print(kayit)
Enter fullscreen mode Exit fullscreen mode

Çıktı:

{
 'ad':'',
 'soyad':'',
 'email':''
}
Enter fullscreen mode Exit fullscreen mode

collections.defaultdict

Çok büyük projelerde sık kullanılır.

from collections import defaultdict

sayac = defaultdict(int)

sayac["python"] += 1

print(sayac)
Enter fullscreen mode Exit fullscreen mode

JSON ve Dictionary İlişkisi

Modern API dünyasının temelidir.

import json

kullanici = {
    "ad": "Ali",
    "yas": 30
}

json_veri = json.dumps(
    kullanici
)

print(json_veri)
Enter fullscreen mode Exit fullscreen mode

Çıktı:

{"ad":"Ali","yas":30}
Enter fullscreen mode Exit fullscreen mode

JSON'dan Dictionary'e

import json

veri = '''
{
    "ad":"Ali",
    "yas":30
}
'''

sonuc = json.loads(veri)

print(sonuc)
Enter fullscreen mode Exit fullscreen mode

Performans Bilgileri

İşlem Ortalama Karmaşıklık
Okuma O(1)
Yazma O(1)
Güncelleme O(1)
Silme O(1)
Arama O(1)
keys() O(n)
values() O(n)
items() O(n)

Dictionary yapısının bu kadar yaygın kullanılmasının temel nedeni Hash Table tabanlı olmasıdır.


Gerçek Hayat Kullanım Örneği

Bir e-ticaret sisteminde ürünler:

urunler = {
    1001: {
        "ad": "Laptop",
        "fiyat": 45000,
        "stok": 15
    },
    1002: {
        "ad": "Mouse",
        "fiyat": 450,
        "stok": 100
    }
}

print(
    urunler[1001]["fiyat"]
)
Enter fullscreen mode Exit fullscreen mode

İleri Seviye: Sıralama

Fiyata göre sıralama:

urunler = {
    "Laptop": 45000,
    "Mouse": 500,
    "Monitör": 12000
}

sirali = sorted(
    urunler.items(),
    key=lambda x: x[1]
)

print(sirali)
Enter fullscreen mode Exit fullscreen mode

İleri Seviye: Merge Operatörü (Python 3.9+)

a = {
    "ad": "Ali"
}

b = {
    "yas": 30
}

c = a | b

print(c)
Enter fullscreen mode Exit fullscreen mode

Çıktı:

{
 'ad':'Ali',
 'yas':30
}
Enter fullscreen mode Exit fullscreen mode

Profesyonel Geliştirici Tavsiyeleri

Dictionary kullanın:

  • Anahtar üzerinden hızlı erişim gerekiyorsa
  • Veriler ilişkilendirilecekse
  • JSON ile çalışılıyorsa
  • API geliştiriliyorsa
  • Cache sistemi kuruluyorsa
  • Konfigürasyon yönetiliyorsa

Dictionary kullanmayın:

  • Sürekli sıralı indeks erişimi gerekiyorsa
  • Sadece pozisyon bazlı veri tutuluyorsa

Özet

Dictionary, Python ekosisteminin en önemli veri yapılarından biridir. Modern web uygulamaları, REST API'ler, mikro servisler, veri analizi projeleri, yapay zeka sistemleri ve otomasyon uygulamalarının büyük bölümü dictionary temelli çalışır.

İyi bir Python geliştiricisi;

  • Dictionary oluşturmayı
  • Veri okumayı
  • Güncellemeyi
  • Silmeyi
  • İç içe sözlükleri
  • Dictionary comprehension kullanımını
  • JSON dönüşümlerini
  • defaultdict ve setdefault yapılarını

çok iyi seviyede bilmelidir.

Dictionary hakimiyeti kazanan bir geliştirici, API geliştirme, veri işleme, log analizi, ETL süreçleri, yapay zeka veri hazırlama ve büyük ölçekli Python uygulamalarında çok daha verimli çalışabilir.

Top comments (0)