# Python Sözlükler

Python sözlükler (dictionaries) konusunu işliyoruz.

Python koleksiyonlar (diziler) altında yer alan sözlük (dict) veri tipimiz değiştirilebilen , indekslenebilen, çoğul elemana izin veren ama sıralanamayan bir veri tipidir. Süslü parantezlerle { } oluşturulur.

sozluk = {}

Süslü parantezlere oluşturulan sözlükler, en başta elemanlarla birlikte de oluşturulabilirler.

sozluk = {
"marka" : "BMW",
"model" : "i8",
"yil" : 2019
}

Aynı zamanda bir sözlük dict() fonksiyonu ile de oluşturulabilir ve constructor yöntemiyle başlangıçta elemanları ayarlanabilir.

sozluk = dict()
sozluk = dict(sehir = "Ankara", plaka = 6)

Daha gelişmiş bir kullanım olan fromkeys() fonksiyonu ile de demetleri kullanarak sözlük oluşturabilirsiniz ve tüm anahtar değerlere aynı anda bir değer atayabilirsiniz.

x = ('anahtar1', 'anahtar2', 'anahtar3')
y = 0
sozluk = dict.fromkeys(x, y)
print(sozluk) # {'anahtar2': 0, 'anahtar3': 0, 'anahtar1': 0}

Oluşturduğumuz sozluk değişkenlerinin tipini kontrol edelim.

print(type(sozluk)) # <class 'dist'>

1. Sözlük Elemanlarına Erişim

Python programlama dilinde elinizdeki bir sözlüğün elemanlarına ulaşabilmek için verinin key yani anahtar kısmını kullanabilirsiniz. Aşağıdaki örnekle anahtarları nasıl kullanacağınızı gösterelim.

sozluk = {
"marka" : "BMW",
"model" : "i8",
"yil" : 2019
}
yil = sozluk["yil"]
print(yil) # 2019

Aynı erişim yöntemini get() fonksiyonla da kullanabilirsiniz.

sozluk = {
"marka" : "BMW",
"model" : "i8",
"yil" : 2019
}
yil = sozluk.get("yil")
print(yil) # 2019

2. Sözlük Elemanlarını Sıralayarak Ekrana Yazdırma

Yeri geldiğinde sözlük elemanlarınızı ekrana sırasıyla yazdırmak, elemanlar üzerinde sırasıyla işlem yapmak isteyebilirsiniz. Bunun için iki yöntemimiz var ve ilkiyle hemen başlayalım.

sozluk = {
"ulke" : "Türkiye",
"sehir" : "Ankara",
"ilce" : "Yenimahalle"
}
for x in sozluk:
print("Anahtar: " + x + " -- " + "Değer: " + sozluk[x])
# Anahtar: ulke -- Değer: Türkiye
# Anahtar: sehir -- Değer: Ankara
# Anahtar: ilce -- Değer: Yenimahalle

Bu örnekte sözlükteki tüm anahtar kelimeleri x değeri üzerinden otomatik olarak listeledik ve bu anahtar kelimeye denk gelen değeri çektik. Şimdi ise aynı örneğimizdeki döngümüzü items() ve values() fonksiyonlarını kullanarak döndüreceğiz. İlk olarak items() fonksiyonu ile başlarsak anahtar ve değerlerin sırasıyla x ve y değişkenine atandığını görebiliriz.

sozluk = {
"ulke" : "Türkiye",
"sehir" : "Ankara",
"ilce" : "Yenimahalle"
}
for x,y in sozluk.items():
print("Anahtar: " + x + " -- " + "Değer: " + y)
# Anahtar: ulke -- Değer: Türkiye
# Anahtar: sehir -- Değer: Ankara
# Anahtar: ilce -- Değer: Yenimahalle

Sadece values() fonksiyonunu kullandığımızda ise döngümüzde yalnızca değerlerin döndüğünü görebiliriz.

sozluk = {
"ulke" : "Türkiye",
"sehir" : "Ankara",
"ilce" : "Yenimahalle"
}
for x in sozluk.values():
print(x)
# Türkiye
# Ankara
# Yenimahalle

Sözlük elemanlarını ekrana yazdırdığınızda elemanların karışık bir halde geldiğini görürsünüz. Sözlükler sıralanamayan bir veri tipi olduğu için her seferinde elemanların yeri değişir.

3. Sözlük Eleman Sayısını Öğrenme

Elinizde olan bir sözlüğün eleman sayısını öğrenmek için len() fonksiyonunu kullanacağız.

sozluk = {
"marka" : "BMW",
"model" : "i8",
"yil" : 2019
}
print(len(sozluk)) #3

4. Bir Elemanın Varlığını Kontrol Etme

Sözlükte bir anahtarın olup olmadığını kontrol etmek için in terimini kullanacağız. Eğer eleman varsa True , yoksa False değerini alırız.

sozluk = {
"marka" : "BMW",
"model" : "i8",
"yil" : 2019
}
print("model" in sozluk) # True
print("i8" in sozluk) # False

5. Sözlüğe Yeni Eleman Ekleme

Oluşturduğumuz sözlüğe yeni bir eleman eklemek için direkt yeni anahtar-değer çiftini kullanabilirsiniz.

sozluk = {
"marka" : "BMW",
"model" : "i8",
}
sozluk["yil"] = 2019
print(sozluk) # {'yil': 2019, 'marka': 'BMW', 'model': 'i8'}

6. Sözlükten Bir Eleman Çıkarmak

Sözlükten anahtar kelimeyi belirterek bir eleman çıkarmak için pop() fonksiyonunu kullanabiliriz.

sozluk = {
"marka" : "BMW",
"model" : "i8",
"yil" : 2019
}
sozluk.pop("yil")
print(sozluk) # {'marka': 'BMW', 'model': 'i8'}

Sözlük veri tipinde elemanlar sıralanamadığı için sözlükten rastgele bir eleman çıkarmak için popitem() fonksiyonunu kullanabiliriz.

sozluk = {
"marka" : "BMW",
"model" : "i8",
"yil" : 2019
}
sozluk.popitem()
print(sozluk) # {'model': 'i8', 'yil': 2019}

Eğer tek tek eleman çıkarmakla uğraşmayıp tüm elemanları sözlükten çıkarmak, sözlüğü temizlemek istiyorsanız clear() fonksiyonunu kullanabiliriz.

sozluk = {
"marka" : "BMW",
"model" : "i8",
"yil" : 2019
}
sozluk.clear()
print(sozluk) # {}

7. Sözlüğü Tamamen Silmek

Sözlükten elemanları çıkarmak veya sözlüğü temizlemek yerine isterseniz sözlüğü tamamen silebilirsiniz. Bunun için del terimini kullanabilirsiniz. Fakat sözlüğü sildikten sonra kullanmaya çalışırsanız hata alacaksınızdır.

sozluk = {
"marka" : "BMW",
"model" : "i8",
"yil" : 2019
}
del sozluk
print(sozluk) # !!! HATA VERİR !!!

8. Sözlük Kopyalamak ve Çoğaltmak

Elimizde olan bir sözlüğü kopyalayarak çoğaltmak için copy() fonksiyonunu kullanabilirsiniz.

sozluk = {
"sehir" : "Ankara",
"plaka" : 6
}
yenisozluk = sozluk.copy()
print(yenisozluk) # {'sehir': 'Ankara', 'plaka': 6}

Başka bir basit yöntemde kopyalanacak sözlüğü belirterek yeni bir sözlük oluşturmaktır.

sozluk = {
"sehir" : "Ankara",
"plaka" : 6
}
yenisozluk = dict(sozluk)
print(yenisozluk) # {'sehir': 'Ankara', 'plaka': 6}

9. İç İçe Sözlük Oluşturma

Dersimizin başında nasıl sözlük oluşturabileceğimizi gördük. Şimdi ise sözlük içinde sözlük, yani iç içe sözlük kullanarak nasıl sözlük değişkeni oluşturabileceğimizi göstereceğiz.

sozluk = {
"sehir1" : {
"sehir" : "Ankara",
"plaka" : 6
},
"sehir2" : {
"sehir" : "İstanbul",
"plaka" : 34
},
"sehir3" : {
"sehir" : "Kayseri",
"plaka" : 38
},
}

Eğer bu kullanım biraz karışık gelmişse tüm sözlükleri ayrı ayrı oluşturup en son birleştirebilirsiniz.

sehir1 = {
"sehir" : "Ankara",
"plaka" : 6
}
sehir2 = {
"sehir" : "İstanbul",
"plaka" : 34
}
sehir3 = {
"sehir" : "Kayseri",
"plaka" : 38
}
sozluk = {
"sehir1" : sehir1,
"sehir2" : sehir2,
"sehir3" : sehir3
}