4 Mayıs 2013 Cumartesi

Sözlükler

SÖZLÜKLER 

Listeler ve demetlerden sonra gelen en önemli veri tiplerindendir. Bunu konuyu anladığımızda , Python’da  bir çok şeyi yapabileceğimizi göreceğiz.
      
İsterseniz sözlük oluşturmakla işe başlayalım.



   Sözlük Oluşturmak

   Bir örnek verip üstünde incelemelere başlayalım.


           sozluk={“İstanbul” :”34” , “Diyarbakır”:”21” , “Isparta”:”32”}
     Sözlüklerde ögelerimizi ayırırken virgül kullanıyoruz.Peki o zaman iki nokta ne anlama geliyor? Sözlükler,“anahtar-değer” çiftlerinden oluşan bir veri tipidir. Burada İstanbul anahtar, 34'te bu anahtarın değeridir veya 21 değerinin anahtarı Diyarbakır’dır .
siparis_rehberi= {  "Corbaci":"444 44 44",
                    "Pizza"  :"555 55 55",
                    "Kebapcı":"666 66 66" }
type(siparis_rehberi)   # veri tipinin ne olduğunu öğrenmek için.

len(siparis_rehberi)    # Veri tipimizin kaç ögesini olduğunu görmemiz için.
3
print siparis_rehberi
{'Corbaci': '444 44 44', 'Kebapci': '666 66 66', 'Pizza': '555 55 55'}
Örneğimizde Corbaci anahtar olup değeri 444 44 44’tür. Buradaki isim ve numaraların hepsi anahtar-deger ilişkisi içerisindedir. Sözlük oluştururken dikkat edilmesi gerekenler:
 • İki noktayı ve virgülü nereye koyduğumuza ,
• Ögelerimizi tanımlarken Ayraç Parantez'i "()" yerine Küme Parantez'i "{}" kullandığımıza,
 • Anahtar-değer ilişkisine,
 • Sayılarımızı tanımlarken tırnak işareti "" kullandığımıza dikkat etmeliyiz.
  Not : Sayılarımız eğer tek haneli ise, aralarında boşluk yoksa ve sıfır ile başlamıyorsa tırnak işareti kullanmayabiliriz. Sözlüklerin Öğelerine Erişmek Bir sözlüğün tüm öğelerini ekrana bastırmak için;
sozluk={"Elma":"meyva" , ... , "masa":"mobilya"}
print sozluk
Her zaman kullandığımız print komutunu kullanıyoruz. Ögeleri tek tek çağırmak istediğimizde ise anahtar ögemiz yardımımız yetişecek.Hep birlikte nasıl olduğuna bakalım.
siparis_rehberi= {   "Corbaci":"444 44 44",
                     "Pizza"  :"555 55 55",
                     "Kebapci":"666 66 66" }
siparis_rehberi["Corbaci"]
'444 44 44'
siparis_rehberi["Kebapci"]
'666 66 66'
Örnekte de görüldüğü gibi bir ögeyi çağırmak istediğimizde köşeli parantez içine anahtar ögemizi yazarak ögelerimize erişiyoruz. 
 Burada dikkat edilmesi gereken iki husus var:
 •Bir anahtarın değerine erişmek istediğimizde “anahtar ” değerimizi kullanmak yani iki nokta işaretinin solundaki ifadeleri kullanmak. 
•Sözlükten öge çağırırken Köşeli Parantez kullanmak. Peki neden liste ve demetlerdeki gibi sayi vererek ögelerimizi çağımadık? Bunun nedeni sözlüklerimizin listelerden ve demetlerden farklı olarak sıralı bir veri tipi olmamasıdır. 

Sözlüklerde Öge Eklemek 

Sözlüklerde öge eklemek çok basit.
sozluk[anahtar]=değer      
şeklindedir. Adı verilen bir kişinin soyadını ve yaşından oluşan bir sözlük yapalım.
 
sozluk={"Ad" :"Ahmet"}
Şimdi soyadımızı ekleyelim.
sozluk["Soyad"]="Kara"
Ve yaşimiz:
sozluk["Yas"]="24" 
Ekrana sözlüğümüzü yazdıralım :
print sozluk
   {"Ad": "Ahmet","Soyad":"Kara","Yas":"24"}
Ekranda gördüğümüz gibi sözlüğe yeni ögeler eklemeyi başarmışız. İsterseniz bu ögeleri sözlüğe tek tek eklemek yerine for döngüsü kullanarak birden fazla ögeyi aynı anda ekleyebiliriz. 

Sözlük Ögelerini Değiştirmek 

Sözlük ögelerini değiştirirken , sözlüğe öge eklerken yaptığımız işlemin aynısını yapıyoruz.
siparis_rehberi={}
siparis_rehberi["Corbaci"]="444 44 44"
print  siparis_rehberi
      {"Corbaci" : "444 44 44"}
Corbaci'mızın numarasını değiştirelim.
siparis_rehberi["Corbaci"]="777 77 77"
Yeni Corbaci'mizin numarasi:
 
print siparis_rehberi
      {"Corbaci" : "777 77 77"}
Şeklinde yapıyoruz. Yaptığımız örnekte gördüğümüz gibi aslında biz sözlükte örnek değiştirmek yerine, eski ögemizi silip,yeni ögemizi yerleştiriyoruz. Bu yüzden bir ögeyi değiştirmek istediğimizde biz bu ögeyi yeniden yazdığımız için yazımıza dikkat etmemiz gerek ,yoksa sözlüğe yeniden öge eklemiş oluruz. Hemen bir uygulamayla anlattığımızı pekiştirelim:
siparis_rehberi["corbaci"]="888 88 88"
     Print siparis_rehberi
          {"Corbaci" :"444 44 44" , "corbaci":"888 88 88"}
Örnekten anladığımız üzere Python büyük,küçük harf yazımına dikkat ediyor.

Sözlük Ögelerini Silmek

Bir sözlükte bir ögeyi silmek için kullanacağımız komutumuz :”del” dir.
del  siparis_rehberi["Pizza"]
Eğer tüm ögeleri silmek istiyorsak; “clear” komutunu
siparis_rehberi.clear()
Eğer yaptığımız sözlüğümüzü de ortadan kaldırmak istiyorsak; ”del” komutunu kullanıyoruz.
del siparis_rehberi 

Sözlüklerin Metotları Sözlüklerde ekleme , çıkarma gibi oynamalar yapabildiğimiz için metot bakımından gayet zengin bir veri tipidir. Sözlüklerin metotları;
• clear
 • pop
 • popitem
 • items
 • iteritems
 • keys
 • values
 • copy
 • fromkeys
 • get
 • has_key
 • setdefault
 • update

         Şimdi bunlardan önemli olanları açıklayalım.

CLEAR()-POP()-POPİTEM()
 clear():Sözlüğün tüm öğelerini siler.
siparis_rehberi= { "Corbaci":"444 44 44",
                   "Pizza"  :"555 55 55",
                   "Kebapci":"666 66 66" }
siparis_rehberi.clear()
print siparis_rehberi
{}
Burada olduğu gibi clear ile sözlüğümüzün tüm ögelerini sildik.
pop(): Bir sözlükte ki ögeleri anahtara göre siler ve silinen anahtarın değerinin ekrana bastırır.
siparis_rehberi={"Corbaci": "444 44 44" , 
                 "Pizza"  : "555 55 55" , 
                 "Kebapci": "666 66 66"}
siparis_rehberi.pop("Corbaci")
'444 44 44'
Burada sözlükten Corbaci anahtarı sildik. Ekranda bize Corbaci anahtarının değerinin yazdırdı.
 popitem(): Bu metodumuz da sözlükten kendisine göre bir anahtar seçer ve siler. Ekrana da sildiği anahtarı ve sildiği anahtarın değerinin yazdırır.
siparis_rehberi.popitem()
("Pizza" :"555 55 55")

İTEMS() VE İTERİTEMS()
 İtems():sözlük içindeki anahtar ve değerleri listeler.
siparis_rehberi.items()
   [("Corbaci" , "444 44 44") , ("Pizza" , "555 55 55") , ("Kebapci" , "666 66 66") ]
İteritems(): Sözlük içindeki anahtarları ve değerleri listeler. Listeyi ekrana yazdırmaz, anahtar-değer çiftlerinden oluşan bir "nesne" üretir. Biz o nesneyi çağırdığımız zaman ekrana yazdırır.

KEYS() VE VALUES()
 keys():Sözlükteki anahtarları yazdırır.
siparis_rehberi= { "Corbaci" :"444 44 44",
                   "Pizza"   :"555 55 55",
                   "Kebapci" :"666 66 66" }
print  siparis_rehberi.keys()
         ["Corbaci" , "Pizza" , "Kebapci"]
values(): Sözlükteki değerleri bize yazdırır.
print siparis_rehberi.values()
         ["444 44 44" , "555 55 55" , "666 66 66"]

İTERKEYS() VE İTERVALUES()
 Bu metotlar az önce gördüğümüz keys() ve values() ile aynı işi yapar. Aralarında ki farkta items() , iteriitems() arasındaki farka benzer.

COPY()
 Bu metot bir sözlüğü kopyalamamızda yardımcı olur.
yeni_siparisler =siparis_rehberi.copy()
print yeni_siparisler
      { "Corbaci" :"444 44 44","Pizza"   :"555 55 55","Kebapci" :"666 66 66" }

GET() VE HAS_KEY()
 Has_key():Bir öğenin sözlük içinde olup olmamasını kontrol ediyoruz.
siparis_rehberi.has_key("Tost")
False
siparis_rehberi.has_key("Pizza")
True
Has_key le get in farkını aşağıda anlayacağız.
siparis_rehberi.get("Tost" , "yok")
yok
siparis_rehberi.has_key("Tost")
false

KAYNAKLAR

2 yorum :

  1. Merhaba, Python 3.6 kullanıyorum. has_key deyimini kullanınca hata veriyor. Yerine ne kullanabilirim acaba?

    YanıtlaSil