Python ile Dictionary (Sözlük) Kullanımı
Python programlama dilinde “dictionary” (sözlük), “List“, “Tuple” ve “Set” ile beraber verileri depolamak için kullanılan dört koleksiyon tipinden biridir. Biz bu yazımızda, Python’daki sözlüklerin, yani “dictionary” veri tipinin ne olduğunu, nasıl oluşturulup kullanıldığını adım adım inceleyeceğiz.
Python’da Dictionary
Python’da, diğer koleksiyon yapılarından farklı olarak bilgileri anahtar ve değer çiftleri şeklinde saklamak için dictionary veri tipi tercih edilir. Örneğin; bir kişiye ait “ad”, “soyad” ve “yaş” bilgilerini bu yapı içinde saklamak oldukça kolaydır. Bakınız:
kisi = {
"ad": "John",
"soyad": "Doe",
"yas": 30
}
print(kisi["ad"]) # Çıktı: John
print(kisi["soyad"]) # Çıktı: Doe
print(kisi["yas"]) # Çıktı: 30
Bu örnekte kisi
adında bir dictionary oluşturduk. Bu sözlük içinde “ad”, “soyad” ve “yas” anahtarlarını kullanarak John Doe’nun bilgilerini sakladık. Daha sonra bu bilgilere anahtarlar aracılığıyla eriştik ve yazdırdık.
Süslü parantezler ({}
) içerisinde tanımlanan dictionary elemanları sırasızdır, bu nedenle indeks numarasıyla doğrudan erişemezsiniz. Bunun yerine, erişmek istediğimiz değere ulaşmak için ilgili anahtarı kullanırız. Örneğin:
kisi = {
"ad": "John",
"soyad": "Doe",
"yas": 30
}
# Doğru kullanım:
print(kisi["ad"]) # Çıktı: John
# Yanlış kullanım:
# print(kisi[0]) # Bu satır hata verir.
3.7 sürümünden itibaren dictionary‘e, elemanları eklenme sırasına göre saklanma özelliği gelmiştir. Yani, bir dictionary’yi tanımladığınızda elemanlarını eklediğiniz sıra ile aynı sırayla saklanır. Ancak bu demek değildir ki, elemanlara indeks numarasıyla erişebiliriz. Bu yalnızca elemanların eklenme sırasını koruduğu anlamına gelir. Bu özellik, özellikle dictionary üzerinde döngülerde işlem yaparken faydalı olmaktadır. Örneğin:
notlar = {
"matematik": 90,
"fen": 85,
"sosyal": 78
}
for ders, notu in notlar.items():
print(f"{ders.capitalize()}: {notu}")
"""
Çıktı:
Matematik: 90
Fen: 85
Sosyal: 78
"""
❗ Value kısmı (değer) bütün veri tiplerini içerebilir ancak keys (anahtar) bölümü değiştirilemez (immutable) veri tiplerinden oluşmalıdır (örneğin string, int, float, tuple). Sözlük içindeki değerlere, anahtarı köşeli parantez arasında yazarak erişilebilmektedir. Örneğin:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
print(thisdict["model"]) #çıktı: Mustang
❗ Sözlükler, aynı anahtara sahip iki elemana sahip olamaz. Aksi takdirde yinelenen değerler, mevcut değerlerin üzerine yazacaktır. Bakınız:
bu_sozluk = {
"marka": "Ford",
"model": "Mustang",
"yil": 1964,
"yil": 2020 #yinelenen değer mevcut değerin üstüne yazar
}
print(bu_sozluk) #çıktı: {'marka': 'Ford', 'model': 'Mustang', 'yil': 2020}
❗ Sözlük içindeki bir elemanın değeri köşeli parantez arasında referans anahtarını belirtilerek değiştirilebilmektedir.
otomobil = {
"uretici": "Renault",
"model": "Clio",
"yil": 2009
}
otomobil["yil"] = 2020;
print(otomobil) #çıktı: {'uretici': 'Renault', 'model': 'Clio', 'yil': 2020}
O halde, tek bir cümle kurarak Python’da dictionary’nin ne olduğunu şu şekilde özetleyebiliriz: Dictionary koleksiyonları, süslü parantezler içerisinde {}
anahtar-değer çiftlerinden oluşan, sırasız, değiştirilebilir ve herhangi bir veri tipinde değer barındırabilen veri koleksiyonlarıdır.
Python’da dictionary, list, tuple ve set arasındaki özellikler aşağıdaki tabloda derlenmiştir. Bakınız:
Özellik | Dictionary | List | Tuple | Set |
---|---|---|---|---|
Tanımlama | {anahtar: değer} | [eleman1, eleman2, ...] | (eleman1, eleman2, ...) | {eleman1, eleman2} |
Sıralı | Hayır | Evet | Evet | Hayır |
Değiştirilebilir | Evet (sadece değerler) | Evet | Hayır | Hayır (ama eleman ekleyip çıkarabilirsiniz) |
Elemanların Özgünlüğü | Anahtarlar için evet | Hayır | Hayır | Evet |
Anahtar-Değer Çifti | Evet | Hayır | Hayır | Hayır |
Indeksleme | Anahtarlar ile | Indeks numarası ile | Indeks numarası ile | Indeksleme desteklenmez |
Ekleme | Anahtar-Değer çifti eklenir | Sonuna veya belirli bir konuma | Değiştirilemez | Eleman ekleyebilir |
Silme | Anahtar ile | Indeks numarası veya değer ile | Değiştirilemez | Eleman silinebilir |
Python’da “For” Döngüsü ile Dictionary Kullanımı
Python’da for döngüsü yardımıyla sözlük içindeki anahtar ve değerler tek tek ele alınabilir.
- Sözlükteki anahtar değerleri döndürmek için:
kisi = {
"Adi": "Brad",
"Soyadi": "Pitt",
"Yas": 57
}
for x in kisi:
print(x)
"""
Çıktı:
Adi
Soyadi
Yas
"""
- Sözlükteki değerleri döndürmek için:
kisi = {
"Adi": "Brad",
"Soyadi": "Pitt",
"Yas": 57
}
for x in kisi:
print(kisi[x])
"""
Çıktı:
Brad
Pitt
57
"""
- Sözlükteki değerler values() metodu kullanarak da yazdırılabilir:
kisi = {
"Adi": "Brad",
"Soyadi": "Pitt",
"Yas": 57
}
for x in kisi.values():
print(x)
"""
Çıktı:
Brad
Pitt
57
"""
- Hem anahtar hem de değerleri for döngüsüyle yazdırmak için items() metodu kullanılır:
kisi = {
"Adi": "Brad",
"Soyadi": "Pitt",
"Yas": 57
}
for x, y in kisi.items():
print(x, y)
"""
Çıktı:
Adi Brad
Soyadi Pitt
Yas 57
"""
Python Dictionary Metotları
Metot | Açıklama |
---|---|
clear() | Tüm elemanları sözlükten kaldırır |
copy() | Sözlüğün bir kopyasını döndürür |
fromkeys() | Belirtilen anahtarlara ve değere sahip bir sözlük döndürür |
get() | Belirtilen anahtarın değerini döndürür |
items() | Her anahtar değer çifti için bir tanımlama grubu içeren bir liste döndürür |
keys() | Sözlüğün anahtarlarını içeren bir liste döndürür |
pop() | Belirtilen anahtarla elemanı kaldırır |
popitem() | Son eklenen anahtar/değer çiftini kaldırır |
setdefault() | Belirtilen anahtarın değerini döndürür |
update() | Sözlüğü belirtilen anahtar/değer çiftleriyle günceller |
values() | Sözlükteki tüm değerlerin bir listesini döndürür |
print ("-------celar-------")
car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
car.clear()
print(car)
print ("-------copy-------")
car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = car.copy()
print(x)
print ("-------fromkeys-------")
x = ('key1', 'key2', 'key3')
y = 0
thisdict = dict.fromkeys(x, y)
print(thisdict)
print ("-------get-------")
car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = car.get("model")
print(x)
print ("-------items-------")
car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = car.items()
print(x)
print ("-------keys-------")
car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = car.keys()
print(x)
print ("-------pop-------")
car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
car.pop("model")
print(car)