# Sözlükler: anahtar-değer çiftleri, ekleme, sorgulama, gezme ve kelime sayımı # # Sözlük, her değeri bir anahtarla eşleştiren kaptır. Listede öğeye sıra # numarasıyla ulaşırken sözlükte anahtarla ulaşırız: plaka["Ankara"] gibi. # Süslü parantezle yazılır: {anahtar: değer, anahtar: değer}. # ── Oluşturma ve okuma ──────────────────────────────────────── plaka = {"İstanbul": 34, "Ankara": 6, "İzmir": 35} yazdir(f"Sözlük : {plaka}") yazdir(f"Ankara'nın plakası : {plaka['Ankara']:02}") yazdir(f"Kaç şehir var : {plaka.uzunluk()}") yazdir() # ── Ekleme ve güncelleme ────────────────────────────────────── # Olmayan bir anahtara değer atamak yeni çift ekler; var olana atamak değeri değiştirir. plaka["Bursa"] = 16 plaka["Trabzon"] = 61 plaka["İzmir"] = 35 yazdir(f"Eklemeden sonra: {plaka}") # ── Sorgulama ───────────────────────────────────────────────── # Sözlükte olmayan bir anahtarı okumak programı hatayla durdurur. # Emin değilsek önce var_mi() ile soruyoruz. dongu sehir icinde ["Trabzon", "Konya"]: eger plaka.var_mi(sehir): yazdir(f"{sehir}: {plaka[sehir]}") degilse: yazdir(f"{sehir}: sözlükte yok") # ── Silme ───────────────────────────────────────────────────── # Sözlükte sil() ANAHTARA göre siler (listede konuma göre silerdi). plaka.sil("Bursa") yazdir(f"Bursa silindi, kalan {plaka.uzunluk()} şehir") yazdir() # ── Gezme ───────────────────────────────────────────────────── # anahtarlar() bütün anahtarları bir liste olarak verir. # Bu liste eklenme sırasında değildir; harflerin bilgisayardaki kod sırasına # göre dizilir ve bu sırada İ, Ş, Ö gibi harfler Z'den sonra gelir (yukarıda # Trabzon, İstanbul'dan önce yazıldı). Türk alfabesine göre gezmek için # anahtar listesini alıp sirala() ile sıralıyoruz. sehirler = plaka.anahtarlar() sehirler.sirala() yazdir("Şehir Plaka") dongu sehir icinde sehirler: yazdir(f"{sehir:<12}{plaka[sehir]:>5}") yazdir() # ── Metinden metne sözlük: küçük bir sözlük uygulaması ──────── ingilizce = { "kitap": "book", "kalem": "pencil", "okul": "school", "öğretmen": "teacher" } cumle = ["öğretmen", "okul", "kitap", "defter"] ceviri = [] dongu kelime icinde cumle: eger ingilizce.var_mi(kelime): ceviri.ekle(ingilizce[kelime]) degilse: ceviri.ekle(f"?{kelime}?") # bilinmeyen kelimeyi işaretle yazdir(f"{cumle.birlestir(' ')} → {ceviri.birlestir(' ')}") yazdir() # ── Sayım: hangi kelime kaç kez geçiyor? ────────────────────── # Sözlüğün en sık kullanıldığı iş budur. Her kelime için: # daha önce gördüysek sayısını bir artırırız, görmediysek 1 ile başlatırız. metin_parcasi = "bir elma bir armut iki elma bir kiraz üç elma iki armut" sayim = {} dongu kelime icinde metin_parcasi.bol(" "): eger sayim.var_mi(kelime): sayim[kelime] = sayim[kelime] + 1 degilse: sayim[kelime] = 1 yazdir(f"Metin: \"{metin_parcasi}\"") yazdir(f"{sayim.uzunluk()} farklı kelime bulundu:") # En sık geçen kelimeyi de aynı gezintide bulalım. # Eşitlik olursa ilk karşılaşılan kalır, çünkü yalnız daha BÜYÜK adet yerini alır. en_sik = "" en_cok = 0 dongu kelime icinde sayim.anahtarlar(): adet = sayim[kelime] # Her kelime için adedi kadar ▇ çizerek küçük bir çubuk grafik yapıyoruz. yazdir(f" {kelime:<7}{adet:>2} " + "▇".tekrarla(adet)) eger adet > en_cok: en_cok = adet en_sik = kelime yazdir(f"En sık geçen: \"{en_sik}\" ({en_cok} kez)") yazdir() # ── Not defteri: öğrenci → not ──────────────────────────────── notlar = {"Ayşe": 88, "Mehmet": 64, "Elif": 92, "Can": 47, "Deniz": 75} toplam = 0 gecen = 0 dongu ogrenci icinde notlar.anahtarlar(): toplam += notlar[ogrenci] eger notlar[ogrenci] >= 50: gecen += 1 yazdir(f"Sınıf ortalaması {toplam / notlar.uzunluk():.1f}; {notlar.uzunluk()} öğrenciden {gecen} kişi geçti.")