Python’da Sözlükler
Python dilinde, sözlükler verileri depolamanın ve erişmenin popüler bir yoludur. Sözlükler, anahtar-değer çiftleri olarak verileri saklar. Bu, bir sözlükteki her veri öğesine bir anahtar atanır ve bu anahtar kullanılarak sözlükteki değerlere erişilir. Bu makalede, Python’da sözlüklerin nasıl kullanıldığına dair ayrıntılı bir açıklama sunacağız.
İçindekiler
- Sözlüklerin Tanımlanması
- Sözlüklerde Veri Ekleme ve Düzenleme
- Sözlüklerde Veri Silme
- Sözlüklerde Veri Okuma
- Sözlüklerde Anahtar Kontrolü
- Sözlüklerin İç İşleyişi
- Sözlüklerin Avantajları
- Sözlüklerin Dezavantajları
- Sözlüklerin Kullanımı Örnekleri
- Sözlüklerin Farklı Kullanım Alanları
- Sözlükler ve Liste Arasındaki Farklar
- Sözlüklerin Bellekteki Yeri
- Sözlüklerin Performansı
- Sözlüklerde Hata Ayıklama
- Sözlüklerin Güncellemeleri
- Sıkça Sorulan Sorular
- Sonuç
1. Sözlüklerin Tanımlanması
Python’da bir sözlük tanımlamak için süslü parantezler {} kullanılır. Anahtar ve değer, iki nokta (:) ile ayrılır ve her çift virgülle ayrılır. Sözlük öğelerine, anahtarları kullanarak erişilir.
1 2 | my_dict = {'anahtar1': 'değer1', 'anahtar2': 'değer2'} |
2. Sözlüklerde Veri Ekleme ve Düzenleme
Bir sözlüğe veri eklemek veya düzenlemek için, anahtar ile değer arasına iki nokta (:) koyarak yeni bir öğe ekleyebiliriz.
1 2 3 4 | my_dict = {'anahtar1': 'değer1', 'anahtar2': 'değer2'} my_dict['anahtar3'] = 'değer3' # Yeni bir öğe ekleme my_dict['anahtar1'] = 'yeni_değer1' # Değer düzenleme |
3. Sözlüklerde Veri Silme
Bir sözlükteki öğeleri silmek için del
anahtar kelimesini kullanabiliriz.
1 2 3 | my_dict = {'anahtar1': 'değer1', 'anahtar2': 'değer2'} del my_dict['anahtar1'] # 'anahtar1' öğesini silme |
4. Sözlüklerde Veri Okuma
Sözlük öğelerine, anahtarları kullanarak erişebiliriz.
1 2 | my_dict = {'anahtar1': 'değer1', 'anahtar2': 'değer2'} print(my_dict['anahtar1']) # 'anahtar1' öğesinin değerini yazdırma |
5. Sözlüklerde Anahtar Kontrolü
Bir anahtarın bir sözlükte olup olmadığını kontrol etmek için in
anahtar kelimesini kullanabiliriz.
1 2 3 4 5 6 7 | my_dict = {'anahtar1': 'değer1', 'anahtar2': 'değer2'} if 'anahtar1' in my_dict: print('anahtar1 sözlükte var') else: print('anahtar1 sözlükte yok') |
6. Sözlüklerin İç İşleyişi
Python’da sözlükler, anahtar-değer çiftleri halinde verileri tutmak için kullanılan önemli bir veri yapısıdır. Sözlükler, programlama dilinde birçok farklı amaç için kullanılır ve genellikle veri bilimi, yapay zeka ve web programlama gibi alanlarda yaygın olarak kullanılır.
Sözlükler, diğer veri yapılarından farklı olarak bir anahtar-değer çiftinden oluşurlar. Bir anahtar, bir değere eşlenir ve bu çift bir sözlük öğesi olarak adlandırılır. Anahtarlar ve değerler herhangi bir veri türü olabilir, ancak anahtarlar yalnızca değiştirilemeyen (immutable) veri türleri olmalıdır, örneğin stringler veya sayılar gibi.
Sözlüklerdeki öğeler, diğer veri yapılarından farklı olarak bir sıraya sahip değildir. Bunun yerine, öğelere anahtarları aracılığıyla erişilir. Bu, sözlüklerin öğelerine hızlı erişim sağlar, ancak öğelerin belirli bir sırayla saklanmadığı anlamına gelir.
Python’da sözlükler, herhangi bir anahtar-değer çiftini eklemek, güncellemek veya silmek için kullanılan bir dizi yöntem sunar. Sözlüklerdeki öğeler, sözlük adı ile birlikte anahtar sözcüğü kullanılarak erişilebilir.
Sözlüklerin bellekteki yeri, diğer veri yapılarına benzerdir. Sözlükler, verileri RAM’de saklar ve bu nedenle büyük miktarda veri saklamaları gerektiğinde bellek kullanımı önemlidir.
Sözlüklerin performansı, veri boyutu arttıkça diğer veri yapılarına kıyasla daha hızlıdır. Ancak, bir sözlükteki öğelere erişim, öğe sayısı ile doğru orantılı olarak daha yavaş hale gelebilir.
Sözlüklerde hata ayıklama yaparken, anahtarların olup olmadığını kontrol etmek ve anahtarların doğru türde olduğundan emin olmak önemlidir. Anahtarlar, değiştirilemeyen türlerden oluştuğundan, bazı işlemleri gerçekleştirmek için anahtarların yeniden oluşturulması gerekebilir.
Sözlüklerdeki öğeler, güncellenmek veya silinmek istendiğinde, sözlük adı ile birlikte anahtar sözcüğü kullanılarak erişilebilir. Değerler güncellenirken, önce anahtarın varlığı kontrol edilmeli ve daha sonra değer değiştirilmelidir.
7. Sözlüklerin Avantajları
Python’da sözlüklerin kullanımının avantajları, programlama dillerinin çoğunda bulunmayan özellikleri ile diğer veri yapılarına kıyasla birçok fayda sağlar. Bu avantajlar şunları içerir:
- Esneklik: Sözlükler, değişken uzunlukta verileri saklama konusunda son derece esnek bir yapıya sahiptir. Örneğin, bir sözlükteki anahtar-değer çiftleri herhangi bir tipte olabilir ve farklı veri tipleriyle kolayca çalışabilirsiniz.
- Hızlı Erişim: Sözlükler, verileri anahtarlarına göre sakladıkları için, verilerin erişimi son derece hızlıdır. Örneğin, bir listedeki bir öğeyi bulmak için her öğeyi kontrol etmek gerekebilirken, bir sözlükte anahtar aramak sadece birkaç işlem yapar.
- Değiştirilebilirlik: Sözlükler, öğelerin eklenmesine, değiştirilmesine ve silinmesine izin verir. Bu, verilerin dinamik olarak yönetilmesini ve değiştirilmesini sağlar.
- Kodun Okunabilirliği: Sözlükler, kodun okunaklılığını ve anlaşılabilirliğini artırır. Anahtar ve değer çiftleri, kodun amacını açıklamak için açıkça belirtilebilir.
- Sözlük Metodları: Python, sözlüklerle çalışmak için bir dizi kullanışlı metod sağlar. Bu metodlar, sözlüklerin anahtarlarına, değerlerine ve öğelerine erişmek, sözlükleri kopyalamak, birleştirmek, temizlemek ve daha fazlasını yapmak için kullanılabilir.
- Sözlük Kullanımının Yaygınlığı: Python’da sözlükler, dilin temel veri yapılarından biridir. Bu nedenle, Python topluluğu, sözlüklerle ilgili birçok kaynak ve bilgi sağlar.
Tüm bu avantajlar, sözlüklerin Python’da yaygın olarak kullanılmasını sağlar ve programcıların verileri etkili bir şekilde saklamasını ve yönetmesini sağlar.
8. Sözlüklerin Dezavantajları
Python’da sözlüklerin kullanımının birkaç dezavantajı vardır:
- Bellek Kullanımı: Sözlükler, diğer veri yapılarına kıyasla daha fazla bellek kullanabilir. Büyük sözlükler, bellek kullanımı konusunda endişe yaratabilir ve programların hızını etkileyebilir.
- Sıralama: Sözlükler, anahtarlarına göre sıralanmazlar ve öğelerin sıralı bir şekilde saklanmasını garanti etmezler. Bu nedenle, verilerin sırası önemliyse, sözlükler yerine listeler kullanılması daha uygun olabilir.
- Dışa Bağımlılık: Python’da sözlükler, dilin temel veri yapılarından biridir ve dilin içinde yer alırlar. Ancak, bazı uygulamalar veya kütüphaneler sözlüklerin kullanımını engelleyebilir veya kısıtlayabilir.
- Hız: Sözlükler, verilerin erişimi konusunda hızlı olsalar da, bazı durumlarda diğer veri yapılarına kıyasla daha yavaş çalışabilirler. Özellikle, büyük sözlüklerde veri erişiminde gecikmeler olabilir.
- Bellek Yönetimi: Sözlükler, öğelerin eklenmesi, değiştirilmesi ve silinmesi sırasında bellek yönetimi sorunlarına neden olabilir. Özellikle, büyük sözlüklerde, öğelerin bellek yönetimi konusunda dikkatli olmak önemlidir.
Bu dezavantajlar, sözlüklerin kullanımı sırasında dikkate alınması gereken faktörlerdir. Programcılar, sözlüklerin kullanımı ile ilgili bu dezavantajları anlamalı ve uygulamalarının gereksinimlerine en uygun veri yapısını seçmelidirler.
9. Sözlüklerin Kullanımı Örnekleri
Sözlükler, verileri saklamak ve erişmek için kullanılan çeşitli uygulamalarda kullanılır. Örnek olarak, bir kişinin adını, adresini ve telefon numarasını saklamak için kullanabiliriz.
1 2 | personel = {'ad': 'Ahmet', 'soyad': 'Yılmaz', 'adres': 'İstanbul', 'telefon': '123456'} |
10. Sözlüklerin Farklı Kullanım Alanları
Python’da sözlükler, farklı programlama senaryolarında kullanılabilir ve birçok avantaj sağlarlar. İşte sözlüklerin farklı kullanım alanlarından bazıları:
- Veri Saklama: Sözlükler, anahtar/değer çiftleri aracılığıyla verileri saklamak için kullanılabilir. Örneğin, bir kullanıcının adı ve yaşını saklamak için sözlükler kullanılabilir.
- Veri Yapıları: Sözlükler, daha karmaşık veri yapıları için temel olarak kullanılabilir. Örneğin, bir ağacın düğümlerini temsil etmek için sözlükler kullanılabilir.
- Veri Dönüştürme: Sözlükler, bir veri kümesinden diğerine dönüştürmek için kullanılabilir. Örneğin, bir CSV dosyasını sözlüğe dönüştürmek için sözlükler kullanılabilir.
- Anahtar Değiştirme: Sözlükler, anahtar/değer çiftlerinin yerini değiştirmek için kullanılabilir. Bu, sözlükleri anahtarlara göre sıralama veya verileri filtreleme gibi işlemler için kullanışlı hale getirir.
- Hızlı Veri Erişimi: Sözlükler, anahtar/değer çiftleri aracılığıyla verilere hızlı bir şekilde erişmek için kullanılabilir. Bu, verilerin sıralı bir şekilde depolanması gerekmeyen durumlarda özellikle kullanışlıdır.
- Veri Gruplama: Sözlükler, benzer verileri gruplamak ve bu grupları anahtar/değer çiftleriyle tanımlamak için kullanılabilir. Bu, özellikle büyük veri kümelerinde işlemlerin yapılması için kullanışlı bir yoldur.
- Arama ve Filtreleme: Sözlükler, verileri anahtar/değer çiftleri aracılığıyla aramak ve filtrelemek için kullanılabilir. Bu, özellikle büyük veri kümelerinde arama işlemlerinin hızlı ve etkili bir şekilde yapılmasını sağlar.
Sözlüklerin farklı kullanım alanları, programcıların veri işleme işlemlerini daha kolay ve verimli hale getirir. Bu nedenle, programcılar, sözlükleri uygun senaryolarda kullanarak kodlarını daha verimli hale getirebilirler.
11. Sözlükler ve Liste Arasındaki Farklar
Python’da, sözlükler ve listeler en sık kullanılan veri yapılarından ikisidir. Her ikisi de farklı veri türleri içerebilir ve çeşitli işlemler gerçekleştirmek için kullanılabilir. Ancak, sözlükler ve listeler arasında bazı önemli farklılıklar vardır.
- Erişim: Sözlükler, anahtar kelimeyle değerlere erişmek için kullanılırken, listeler sıra numarasıyla erişim sağlar.
- Sıralama: Sözlükler sıralı bir yapıya sahip değillerdir, yani elemanlar rastgele sırayla depolanır. Ancak listeler, elemanların sıralı bir şekilde depolandığı bir yapıya sahiptir.
- Değiştirilebilirlik: Sözlükler değiştirilebilirken, listeler değiştirilebilir. Bir sözlükte anahtar kelimeye karşılık gelen değerler değiştirilebilirken, bir listedeki elemanlar değiştirilebilir.
- Elemanların tipi: Sözlüklerin anahtar ve değerlerinde farklı veri tipleri olabilirken, bir listedeki tüm elemanlar aynı veri tipinde olmalıdır.
- Bellek kullanımı: Sözlükler genellikle daha fazla bellek kullanır çünkü anahtar kelime ve değerler birlikte depolanırken, listeler sadece elemanları depolar.
- Performans: Sözlükler listelere kıyasla daha hızlı erişim sağlar, ancak bellek kullanımı nedeniyle performansları değişebilir.
Python’da sözlükler ve listeler farklı amaçlar için kullanılabilir. Listeler, sıralı verileri depolamak ve sıralı işlemler gerçekleştirmek için kullanılabilirken, sözlükler anahtar kelimelerle ilişkili verileri depolamak ve anahtar kelimeye göre aramalar yapmak için kullanılabilir.
12. Sözlüklerin Bellekteki Yeri
Python’da sözlükler, bellekte dinamik olarak oluşturulur ve depolanır. Sözlükler, anahtar kelimeleri ve bu anahtar kelimeye karşılık gelen değerleri depolamak için kullanılan veri yapılarıdır. Sözlükler, liste veya demetler gibi diğer veri yapılarından farklı olarak, öğelerin sırasına ihtiyaç duymazlar.
Bir sözlük oluşturulduğunda, bellekte bir referans numarası atanır ve bu numara sözlük öğesine işaret eder. Sözlükler, Python’un otomatik bellek yönetim sistemi tarafından yönetilir ve kullanılmayan öğeler otomatik olarak bellekten temizlenir.
Sözlükler, özellikle büyük veri kümeleri için idealdir çünkü anahtar kelimelerle değerler arasında bağlantı kurarak verileri kolayca aramak ve düzenlemek için kullanılabilirler. Sözlükler, listeler ve demetlerle birlikte sık kullanılan Python veri yapılarından biridir ve etkili bir veri yönetimi için gereklidir.
13. Sözlüklerin Performansı
Python’da sözlükler, performans açısından oldukça etkilidir. Sözlükler, anahtar kelimeler ve değerler arasında hızlı bir şekilde eşleştirme yapabilen bir veri yapısıdır. Bu, büyük veri kümelerinde bile hızlı ve etkili bir şekilde çalışmalarını sağlar.
Python’da sözlükler, özellikle arama işlemleri için çok hızlıdır. Bir anahtar kelimeye karşılık gelen değeri aramak, sözlüklerin ana özelliğidir ve bu işlem hızlı bir şekilde gerçekleştirilir. Sözlükler ayrıca, anahtar kelime değerleri üzerinde de hızlı bir şekilde işlem yapabildiği için, özellikle büyük veri kümeleri için etkili bir şekilde kullanılabilirler.
Sözlüklerin performansı, sözlükteki öğe sayısına ve anahtar kelime ve değerlerin boyutuna bağlıdır. Sözlükler, liste ve demetler gibi diğer veri yapılarından daha hızlı bir şekilde erişilebilirler ancak bellekte daha fazla alan kaplarlar. Bu nedenle, büyük veri kümeleri için, sözlüklerin hızlı erişim avantajı, bellek kullanımının daha fazla olması nedeniyle dezavantajlı hale gelebilir.
14. Sözlüklerde Hata Ayıklama
Python sözlüklerinde hata ayıklama, diğer veri yapılarındaki hata ayıklama ile aynı prensiplere dayanır. Genellikle hatalar, sözlük anahtarlarına yanlış bir şekilde erişim yapmaya çalışmak veya belirli bir anahtar kelimeye karşılık gelen bir değeri değiştirmeye çalışmak gibi sözlük işlemleri sırasında ortaya çıkar.
Bir sözlükteki bir anahtar kelimeyi aramak veya belirli bir anahtar kelimeye karşılık gelen değeri elde etmek sırasında hatalar meydana gelebilir. Bu nedenle, sözlük işlemleri yaparken, öncelikle sözlükte bulunan anahtar kelime ve değerleri doğru bir şekilde yazdığınızdan emin olmanız gerekir.
Bir sözlükteki bir değeri değiştirmeye çalışırken de hatalar ortaya çıkabilir. Bu nedenle, önce sözlükte belirli bir anahtar kelime için bir değer var mı diye kontrol etmek gerekir. Eğer varsa, bu değeri değiştirmek veya güncellemek mümkündür. Ancak, anahtar kelime sözlükte bulunmuyorsa, bu anahtar kelimeye karşılık gelen bir değer değiştirilemez veya güncellenemez.
Sözlüklerde hata ayıklama yapmak için, Python’da bulunan hata ayıklama araçlarını kullanabilirsiniz. Örneğin, sözlüklerdeki bir hata nedeniyle kodunuzda bir hata oluştuysa, Python hata mesajlarını yazdırarak hatanın kaynağını tespit etmenize yardımcı olur. Bu hata mesajlarını kullanarak, sözlüklerdeki hataları tespit etmek ve düzeltmek mümkündür.
15. Sözlüklerin Güncellemeleri
Python’da sözlükler, değiştirilebilir (mutable) veri tipleri olduğundan, güncellenebilirler. Bu, sözlüklerin var olan öğelerinin değiştirilebileceği, yeni öğelerin eklenebileceği ve hatta bazı öğelerin silinebileceği anlamına gelir.
Sözlüklerde güncelleme işlemi, sözlükteki anahtar değer çiftlerini manipüle etmek için kullanılan birkaç farklı yöntemle gerçekleştirilebilir. Bunlar şunlardır:
- Anahtar Değer Atama: Var olan bir anahtara yeni bir değer atamak için kullanılır.
Örnek:
1 2 3 4 5 6 7 8 9 10 | # önce sözlük oluşturalım sozluk = {'meyve': 'elma', 'sebze': 'pırasa'} # 'meyve' anahtarının değerini değiştirelim sozluk['meyve'] = 'portakal' # sözlüğü yazdıralım print(sozluk) # çıktı: {'meyve': 'portakal', 'sebze': 'pırasa'} |
- Yeni Anahtar Değer Ekleme: Yeni bir anahtar ve değer eklemek için kullanılır.
Örnek:
1 2 3 4 5 6 7 8 9 10 | # önce sözlük oluşturalım sozluk = {'meyve': 'elma', 'sebze': 'pırasa'} # yeni bir anahtar ve değer ekleyelim sozluk['tatli'] = 'şekerpare' # sözlüğü yazdıralım print(sozluk) # çıktı: {'meyve': 'elma', 'sebze': 'pırasa', 'tatli': 'şekerpare'} |
- Anahtar Değer Silme: Var olan bir anahtar değeri silmek için kullanılır.
Örnek:
1 2 3 4 5 6 7 8 9 10 | # önce sözlük oluşturalım sozluk = {'meyve': 'elma', 'sebze': 'pırasa'} # 'meyve' anahtarını sözlükten silelim del sozluk['meyve'] # sözlüğü yazdıralım print(sozluk) # çıktı: {'sebze': 'pırasa'} |
Sözlüklerde güncelleme işlemleri, özellikle büyük boyutlu sözlüklerde yavaşlayabilir. Bu nedenle, performansı artırmak için, mümkün olduğunda, önceden tanımlanmış bir sözlüğe yeni öğeleri eklemek yerine, öğeleri daha küçük parçalara bölen ve daha sonra birleştiren bir yöntem kullanılabilir.
16. Sık Sorulan Sorular
- Sözlükler, verileri hangi şekilde saklar?
- Sözlükler, anahtar-değer çiftleri olarak verileri saklar.
- Sözlüklerin anahtarları nedir?
- Sözlüklerin anahtarları, verileri saklamak ve erişmek için kullanılan benzersiz öğelerdir.
- Sözlüklerdeki anahtarların benzersiz olması neden önemlidir?
- Sözlüklerdeki anahtarların benzersiz olması, verileri tutarlı bir şekilde saklamamızı ve erişmemizi sağlar.
- Bir sözlük öğesinin değerini nasıl alabiliriz?
- Bir sözlük öğesinin değerini, anahtarını kullanarak sözlükten erişerek alabiliriz.
- Sözlükler, hangi veri yapılarından farklıdır?
- Sözlükler, listeler ve demetler gibi diğer Python veri yapılarından farklı olarak, anahtar-değer çiftleri olarak verileri saklarlar.
17. Sonuç
Python’da sözlükler, anahtar-değer çiftleri olarak verileri saklamak ve erişmek için kullanışlı bir veri yapısıdır. Sözlükler, hızlı ve etkili bir şekilde verileri saklamamıza ve erişmemize olanak tanır. Sözlüklerin kullanımı, veri depolama ve erişim ihtiyaçlarımızı karşılamak için çok çeşitli uygulamalarda bulunabilir.
Python Sözlük Yöntemleri
Bir sözlükle kullanılabilen yöntemler aşağıda tablo halinde verilmiştir. Bazıları yukarıdaki örneklerde zaten kullanılmıştır.
Yöntem | Tanım |
---|---|
clear() | Tüm öğeleri sözlükten kaldırır. |
copy() | Sözlüğün sığ bir kopyasını döndürür. |
fromkeys() | Verilen sözlükte değerler içinde deger parametresini içeren elemanlardan oluşan yeni bir sözlük oluşturur. |
get(anahtar) | Varsa anahtar değerini döndürür, yoksa çıktı olarak None verir. |
items() | Hem anahtar hem de değerlerin bir listesini verir. |
keys() | Sözlüğün anahtarlarını döndürür. |
pop() | Eğer varsa verilen elemanı siler yoksa KeyError oluşur. |
popitem() | Rasgele bir elemanı kaldırır. |
setdefault() | Anahtar elemanı varsa değişiklik yapmaz. Yoksa sözlüğe verilen şekilde ekleme yapar. |
update() | Sözlüğü, anahtar/değer çiftleriyle günceller. |
values() | Sözlüğün değerlerini döndürür. |
sozluklerde key değeri ile karşılı olan value değerine ulaşıyoruz. Ama value değerini verip karşılığı olan key değerine nasıl ulaşırız?
Merhaba Burak. Bunu direkt olarak yapmanın bir yolu yok maalesef ancak aşağıdaki kodu kullanarak istediğin işlemi gerçekleştirebilirsin:
ornek_sozluk ={“Sınav1”:80, “Sınav2”:75, “Sınav3”:96}
list(ornek_sozluk.keys())[list(ornek_sozluk.values()).index(80)] # Sınav1