Python - Sözlük
Sözlük'te her anahtar, değerinden iki nokta üst üste (:) ile ayrılır, öğeler virgülle ayrılır ve her şey küme parantezleri içine alınır. Hiçbir öğe içermeyen boş bir sözlük yalnızca iki küme parantezi ile yazılır, örneğin: {}.
Değerler olmayabilir, ancak anahtarlar sözlük içinde benzersizdir. Bir sözlüğün değerleri herhangi bir türde olabilir, ancak anahtarlar dizeler, sayılar veya diziler gibi değişmez bir veri türünde olmalıdır.
Sözlükteki Değerlere Erişim
Sözlük öğelerine erişmek için, değerini elde etmek için anahtarla birlikte tanıdık köşeli parantezleri kullanabilirsiniz. Aşağıdaki basit bir örnektir -
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print "dict['Name']: ", dict['Name']
print "dict['Age']: ", dict['Age']
Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -
dict['Name']: Zara
dict['Age']: 7
Sözlüğün parçası olmayan bir anahtarla bir veri öğesine erişmeye çalışırsak, aşağıdaki gibi bir hata alırız -
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print "dict['Alice']: ", dict['Alice']
Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -
dict['Alice']:
Traceback (most recent call last):
File "test.py", line 4, in <module>
print "dict['Alice']: ", dict['Alice'];
KeyError: 'Alice'
Sözlük Güncelleniyor
Aşağıdaki basit örnekte gösterildiği gibi yeni bir giriş veya anahtar-değer çifti ekleyerek, mevcut bir girişi değiştirerek veya mevcut bir girişi silerek sözlüğü güncelleyebilirsiniz -
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
dict['Age'] = 8; # update existing entry
dict['School'] = "DPS School"; # Add new entry
print "dict['Age']: ", dict['Age']
print "dict['School']: ", dict['School']
Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -
dict['Age']: 8
dict['School']: DPS School
Sözlük Öğelerini Sil
Tek tek sözlük öğelerini kaldırabilir veya bir sözlüğün tüm içeriğini temizleyebilirsiniz. Tek bir işlemle sözlüğün tamamını da silebilirsiniz.
Bir sözlüğün tamamını açıkça kaldırmak için, delBeyan. Aşağıdaki basit bir örnektir -
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
del dict['Name']; # remove entry with key 'Name'
dict.clear(); # remove all entries in dict
del dict ; # delete entire dictionary
print "dict['Age']: ", dict['Age']
print "dict['School']: ", dict['School']
Bu, aşağıdaki sonucu verir. Bir istisna oluştuğunu unutmayın çünkü sonradel dict sözlük artık yok -
dict['Age']:
Traceback (most recent call last):
File "test.py", line 8, in <module>
print "dict['Age']: ", dict['Age'];
TypeError: 'type' object is unsubscriptable
Note - del () yöntemi sonraki bölümde ele alınmaktadır.
Sözlük Anahtarlarının Özellikleri
Sözlük değerlerinde sınırlama yoktur. Standart nesneler veya kullanıcı tanımlı nesneler gibi rastgele herhangi bir Python nesnesi olabilirler. Ancak aynı şey anahtarlar için geçerli değil.
Sözlük tuşlarıyla ilgili hatırlanması gereken iki önemli nokta vardır:
(a)Anahtar başına birden fazla girişe izin verilmez. Bu, yinelenen anahtara izin verilmediği anlamına gelir. Atama sırasında yinelenen anahtarlarla karşılaşıldığında, son atama kazanır. Örneğin -
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'}
print "dict['Name']: ", dict['Name']
Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -
dict['Name']: Manni
(b)Anahtarlar değişmez olmalıdır. Bu, dizeleri, sayıları veya demetleri sözlük anahtarları olarak kullanabileceğiniz, ancak ['anahtar'] gibi bir şeye izin verilmediği anlamına gelir. Aşağıdaki basit bir örnektir -
#!/usr/bin/python
dict = {['Name']: 'Zara', 'Age': 7}
print "dict['Name']: ", dict['Name']
Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -
Traceback (most recent call last):
File "test.py", line 3, in <module>
dict = {['Name']: 'Zara', 'Age': 7};
TypeError: list objects are unhashable