Bir anahtar üzerinden aramayı en kısa sürede yapmak için Dictionary veri türü en uygun veri yapısıdır. Anahtar ve değer çiftlerinden oluşur. Anahtar ve değer birbirinden “:” ile ayrılırken tüm nesneler birbirinden “,” ile ayrılır. Anahtar değer ikinci defa tekrarlanamaz, ancak değeri güncellenebilir.
7.5.1. Değerlere erişim
Verilere eişimek için köşeli parantezlerin arasına anahtar değer yazılır. Örneğin,
1 2 3 |
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'} print("dict['Name']: ", dict['Name']) print("dict['Age']: ", dict['Age']) |
1 2 |
dict['Name']: Zara dict['Age']: 7 |
7.5.2. Değerleri güncelleme
Anahtar değer üzerinden değer güncellenebilir. Örneğin,
1 2 3 4 5 |
dict['Age'] = 8 # Güncelleme dict['School'] = "DPS School" # Yeni bir anahtar ve değer ekleme #değerler görüntüleniyor. print("dict['Age']: ", dict['Age']) print("dict['School']: ", dict['School']) |
1 2 |
dict['Age']: 8 dict['School']: DPS School |
Ayrıca, örneğin 2. satırında olduğu gibi yeni anahtar tanımlanıp değeri atanabilir.
7.5.3. Bir sözlük öğesini silme
Tek tek sözlük öğelerini kaldırabilir veya bir sözlüğün tüm içeriğini temizleyebilirsiniz. Tüm sözlüğü tek bir işlemle de silebilirsiniz.
1 2 3 4 |
del dict['Name'] # 'Name' anahtarını siler dict.clear() # Tüm anahtarları ve değerlerini siler del dict # Tüm sözlüğü siler print("dict['Age']: ", dict['Age']) #silme işlemi ardından anahtara ulaşılamaz. |
1 2 3 4 5 6 |
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-5-0527bc4a2f2f> in <module>() ----> 1 print("dict['Age']: ", dict['Age']) TypeError: 'type' object is not subscriptable |
7.5.4. Dictionary anahtarlarının özellikleri
Dictionary değer kısmının herhangi bir veri türü kısıtlaması yoktur. Standart nesneler veya yarattığımız herhangi bir nesne gibi rastgele bir Python nesnesi olabilirler. Ancak, aynı durum anahtarlar için de geçerli değildir. Anahtar kuralları:
- Bir anahtar değere birden fazla değer atamasını önerilmez. Eğer böyle bir atama işlemi yaparsanız, son atama değeri anahtar değeri olarak kabul edilir. Örneğin,
1 2 |
dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'} print("dict['Name']: ", dict['Name']) |
1 |
dict['Name']: Manni |
- Anahtar değeri sonradan değiştirilemez. Başka bir deyişle değişmez bir değer seçilmelidir. Anahtar için katar, sayı veya tuple kullanılabilir ama liste şeklinde bir kullanım olmaz. Örneğin,
1 2 |
dict = {['Name']: 'Zara', 'Age': 7} print("dict['Name']: ", dict['Name']) |
1 2 3 4 5 6 7 |
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-7-b655537ec38d> in <module>() ----> 1 dict = {['Name']: 'Zara', 'Age': 7} 2 print("dict['Name']: ", dict['Name']) TypeError: unhashable type: 'list' |
7.5.5. Dictionary kullanılabilen fonksiyon ve metotlar
Fonksiyonlar ile başlayalım.
Fonksiyon | Tanımı |
---|---|
len(dict) | Dictionary toplam uzunluğunu verir. Başka bir deyişle öğe sayısını verir. |
str(dict) | Dictionary için bir katar gösterimi oluşturur. |
type(variable) | Değişkenin değer türünü döndürür. |
1 2 |
dict = {'Name': 'Zara', 'Age': 7} print("Uzunluk : %d" % len (dict)) |
1 |
Uzunluk : 2 |
Metotlar,
Metot | Tanımı |
---|---|
dict.clear() | Bir dictionary içindeki tüm öğeleri temizler. |
dict.copy() | Dictionary’nin bir gölge kopyasını döndürür. |
dict.fromkeys() | Bir diziden (anahtar değerler) yeni bir dictionary yaratmak için kullanılır. İstenirse anahtar değerlerin karşılığı da yazılabilir. |
dict.get(key, default=None) | key değeri için value değeri döndürür, eğer değer dictionary’de yoksa default değeri döndürür. |
key in dict | Eğer anahtar değer sözlükte var ise True, aksi takdirde False değeri döndürür. |
dict.items() | Bir tuple parçaları şeklinde dict nesnesini döndürür. |
dict.keys() | Bir dictionary’nin anahtarını döndürür. |
dict.setdefault(key, default=None) | get metoduna benzer, ancak var olmayan tüm değeri sözlük içine ekler ve default değeri atar. |
dict.update(dict2) | dict2’nin anahtar-değer çiftlerini dict nesnesine ekler. |
dict.values() | Dictionary değerlerini döndürür. |
1 2 3 4 5 6 |
seq = ('name', 'age', 'sex') dict = dict.fromkeys(seq) print("Yeni Dictionary : %s" % str(dict)) dict = dict.fromkeys(seq, 10) print("Yeni Dictionary : %s" % str(dict)) |
1 2 |
Yeni Dictionary : {'name': None, 'age': None, 'sex': None} Yeni Dictionary : {'name': 10, 'age': 10, 'sex': 10} |