Python'da bulunan bir diğer faydalı veri türü de sözlüktür. Sözlükler
diğer programlama dillerinde ``çağrışımlı bellek'' (associative memory)
veya ``çağrışımlı dizi'' (associative array) olarak bilinirler.
Sayılarla indislenen sıralardan farklı olarak, sözlükler anahtarlar
(key) ile indislenirler. Anahtar değiştirilemeyen türdeki herhangi bir
veri türünde olabilir. Sayılar ve dizgeler her zaman anahtar olabilirler.
Demetler de sayılar, dizgeler veya demetler içerdikleri sürece
anahtar olabilirler. Bir demet doğrudan ya da dolaylı olarak değiştirilebilir
bir nesne içeriyorsa anahtar olarak kullanılamaz. Listeler anahtar
olamazlar, çünkü append() ile extend()
yöntemleri, dilimleme ve indise değer atama ile değiştirilebilirler.
Bir sözlük anahtar : değer çiftlerinden oluşur. Bir
anahtar sözlükte sadece bir defa bulunabilir. Bir çift çengelli parantez
boş bir sözlük yaratır : {}. Çengelli parantezlerin
içine virgülle ayrılmış anahtar : değer çiftleri
koymak anahtar ve değer çiftlerine ilk değerlerini verir. Çıktıya da
sözlükler aynı şekilde yazılırlar.
Sözlüklerle ilgili ana işlemler bir değerin bir anahtar ile saklanması
ve anahtar verildiğinde değerin bulunmasıdır. del
kullanarak bir anahtar : değer çiftini silmek mümkündür.
Zaten mevcut olan bir anahtar kullanarak bir değer eklerseniz bu anahtarla
bağlantılı eski değer unutulur. Mevcut olmayan bir anahtar ile değer
istemek hatalıdır.
Sözlük nesnesinin keys() yöntemi listedeki bütün
anahtarların listesini rasgele sıralı olarak geri döndürür (sıralamak
isterseniz listenin sort() yönteminden faydalanabilirsiniz).
Bir anahtarın sözlükte olup olmadığını görmek için sözlüğün
has_key() yöntemi kullanılır.
İşte sözlük kullanan küçük bir örnek:
>>> tel = {'jack': 4098, 'sape': 4139}
>>> tel['guido'] = 4127
>>> tel
{'sape': 4139, 'guido': 4127, 'jack': 4098}
>>> tel['jack']
4098
>>> del tel['sape']
>>> tel['irv'] = 4127
>>> tel
{'guido': 4127, 'irv': 4127, 'jack': 4098}
>>> tel.keys()
['guido', 'irv', 'jack']
>>> tel.has_key('guido')
1
dict() işlevi anahtar-değer çiftlerinden oluşan demetlerden
sözlükler üretir. Çiftlerin bir kalıba uyduğu durumlarda, liste üreteçleri
ile anahtar-değer çiftleri kısaca ifade edilebilir.
>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
{'sape': 4139, 'jack': 4098, 'guido': 4127}
>>> dict([(x, x**2) for x in vec]) # liste üreteci kullanarak
{2: 4, 4: 16, 6: 36}