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)
Çıktı:
{'ad': 'Ahmet', 'soyad': 'Yılmaz', 'yas': 22}
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
}
Boş Dictionary
veriler = {}
veya
veriler = dict()
Veri Okuma
kullanici = {
"isim": "Ali",
"yas": 30
}
print(kullanici["isim"])
Çıktı:
Ali
get() Kullanımı
Anahtar bulunamazsa hata vermez.
kullanici = {
"isim": "Ali"
}
print(
kullanici.get(
"telefon",
"Bulunamadı"
)
)
Çıktı:
Bulunamadı
Veri Güncelleme
urun = {
"ad": "Laptop",
"fiyat": 25000
}
urun["fiyat"] = 30000
print(urun)
Çıktı:
{'ad': 'Laptop', 'fiyat': 30000}
Yeni Alan Eklemek
urun = {
"ad": "Laptop"
}
urun["stok"] = 50
print(urun)
Çıktı:
{'ad': 'Laptop', 'stok': 50}
Veri Silmek
del
urun = {
"ad": "Laptop",
"stok": 50
}
del urun["stok"]
print(urun)
pop()
urun = {
"ad": "Laptop",
"stok": 50
}
urun.pop("stok")
print(urun)
Tüm İçeriği Temizlemek
urun = {
"ad": "Laptop",
"stok": 50
}
urun.clear()
print(urun)
Çıktı:
{}
Dictionary Uzunluğu
kisi = {
"ad": "Ali",
"yas": 25,
"sehir": "İzmir"
}
print(len(kisi))
Çıktı:
3
Anahtarların Listelenmesi
kisi = {
"ad": "Ali",
"yas": 25,
"sehir": "İzmir"
}
print(kisi.keys())
Çıktı:
dict_keys(['ad', 'yas', 'sehir'])
Değerlerin Listelenmesi
print(kisi.values())
Çıktı:
dict_values(['Ali', 25, 'İzmir'])
Anahtar-Değer Çiftleri
print(kisi.items())
Çıktı:
dict_items([
('ad', 'Ali'),
('yas', 25),
('sehir', 'İzmir')
])
Dictionary Üzerinde Dönmek
Anahtarlar
for key in kisi:
print(key)
Anahtar ve Değer
for key, value in kisi.items():
print(key, value)
Çıktı:
ad Ali
yas 25
sehir İzmir
İç İç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"]
)
Çıktı:
İzmir
Dictionary İçinde Liste
ogrenci = {
"ad": "Ayşe",
"notlar": [
80,
90,
100
]
}
print(
ogrenci["notlar"][1]
)
Çıktı:
90
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"])
Çıktı:
Ayşe
Dictionary Comprehension
List Comprehension kadar güçlüdür.
Kareler Tablosu
kareler = {
x: x*x
for x in range(1,11)
}
print(kareler)
Çıktı:
{
1:1,
2:4,
3:9,
...
}
Filtreleme
ciftler = {
x: x*x
for x in range(20)
if x % 2 == 0
}
print(ciftler)
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}"
)
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)
Çıktı:
{
'python':3,
'veri':1,
'bilimi':1,
'yapay':1,
'zeka':1
}
Hands-On 3: Ürün Stok Takibi
stok = {
"Laptop": 10,
"Mouse": 25,
"Klavye": 15
}
urun = "Mouse"
stok[urun] -= 1
print(stok)
Hands-On 4: Maaş Hesaplama Sistemi
maaslar = {
"Ali": 50000,
"Ayşe": 70000,
"Mehmet": 60000
}
ortalama = (
sum(maaslar.values())
/
len(maaslar)
)
print(ortalama)
Hands-On 5: API Yanıtı Simülasyonu
response = {
"success": True,
"data": {
"id": 100,
"ad": "Laptop",
"fiyat": 35000
}
}
print(
response["data"]["ad"]
)
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)
Çıktı:
{
'INFO':2,
'ERROR':3,
'WARNING':1
}
setdefault()
Anahtar yoksa oluşturur.
ayarlar = {}
ayarlar.setdefault(
"tema",
"dark"
)
print(ayarlar)
Çıktı:
{'tema': 'dark'}
update()
Birden fazla alan güncellemek için kullanılır.
kisi = {
"ad": "Ali"
}
kisi.update({
"yas": 30,
"sehir": "İzmir"
})
print(kisi)
fromkeys()
alanlar = [
"ad",
"soyad",
"email"
]
kayit = dict.fromkeys(
alanlar,
""
)
print(kayit)
Çıktı:
{
'ad':'',
'soyad':'',
'email':''
}
collections.defaultdict
Çok büyük projelerde sık kullanılır.
from collections import defaultdict
sayac = defaultdict(int)
sayac["python"] += 1
print(sayac)
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)
Çıktı:
{"ad":"Ali","yas":30}
JSON'dan Dictionary'e
import json
veri = '''
{
"ad":"Ali",
"yas":30
}
'''
sonuc = json.loads(veri)
print(sonuc)
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"]
)
İ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)
İleri Seviye: Merge Operatörü (Python 3.9+)
a = {
"ad": "Ali"
}
b = {
"yas": 30
}
c = a | b
print(c)
Çıktı:
{
'ad':'Ali',
'yas':30
}
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)