Sözlüklerde sıralama

paragraf = """Kendisinden söz etmeyi kötü görmek,
yasak etmek adet olmuştur;
çünkü kendinden söz etmek her zaman kendini övmek gibi görünür.
Kendini övmek ise herkesin zıddına gider;
ama kendinden söz etmeyi yasak etmek, çocuğun burnunu silecek yerde,
burnunu koparmak olur.
Bu tedbirde insan kardan çok zarar görür."""

sozluk = {}

kelimeler = set(paragraf.split())

for kelime in kelimeler:
    sozluk.update({kelime: paragraf.count(kelime)})

print("Öncesi:", sozluk)

def bubblesort(sozluk):
    yerel_sozluk = {}
    j, k = 0, 0
    items = list(sozluk.items())
    for _ in range(len(sozluk)):
        for i in range(len(sozluk)):
            k = items[i][1]
            if k > j and i != 0:
                items[i - 1], items[i] = items[i], items[i - 1]
            j = k

    for key, item in items:
        yerel_sozluk.update({key: item})

    return yerel_sozluk
    
print("Sonrası:", bubblesort(sozluk))

Öncesi: {'söz': 3, 'kötü': 1, 'burnunu': 2, 'herkesin': 1, 'ise': 1, 'çok': 1, 'her': 2, 'kendinden': 2, 'zıddına': 1, 'kardan': 1, 'kendini': 1, 'çocuğun': 1, 'etmeyi': 2, 'adet': 1, 'koparmak': 1, 'görünür.': 1, 'olur.': 1, 'zaman': 1, 'zarar': 1, 'olmuştur;': 1, 'yerde,': 1, 'görür.': 1, 'gibi': 1, 'Kendini': 1, 'gider;': 1, 'ama': 2, 'etmek,': 1, 'yasak': 2, 'tedbirde': 1, 'övmek': 2, 'Kendisinden': 1, 'silecek': 1, 'etmek': 3, 'çünkü': 1, 'görmek,': 1, 'Bu': 1, 'insan': 1}
Sonrası: {'söz': 3, 'etmek': 3, 'burnunu': 2, 'her': 2, 'kendinden': 2, 'etmeyi': 2, 'ama': 2, 'yasak': 2, 'övmek': 2, 'kötü': 1, 'herkesin': 1, 'ise': 1, 'çok': 1, 'zıddına': 1, 'kardan': 1, 'kendini': 1, 'çocuğun': 1, 'adet': 1, 'koparmak': 1, 'görünür.': 1, 'olur.': 1, 'zaman': 1, 'zarar': 1, 'olmuştur;': 1, 'yerde,': 1, 'görür.': 1, 'gibi': 1, 'Kendini': 1, 'gider;': 1, 'etmek,': 1, 'tedbirde': 1, 'Kendisinden': 1, 'silecek': 1, 'çünkü': 1, 'görmek,': 1, 'Bu': 1, 'insan': 1}
  • bubblesort isimli bir fonksiyon tanımlıyoruz.

  • fonksiyon içerisinde yerel bir sözlük oluşturuyoruz.

  • Parametre olarak aldığımız sözlüğün key ve itemlerini içeren bir liste oluşturuyoruz ve bunu items isimli değişkene atıyoruz.

  • items = [("söz", 3), ("kötü", 1), ..., ("ise", 1)] gibi bir şey oluyor.

  • Görüldüğü üzere her bir key ve item, bir tuple içerisinde yer alıyor. Buna göre kolaylıkla item değerine ulaşabiliriz.

  • k = items[i][1], o anki indekse göre items içerisindeki tuple’dan item değeri çekiliyor. Önceki item değeri ile karşılaştırılıyor. (if k > j)

  • Eğer mevcut item değeri, önceki item değerinden büyük ise, bu iki indeksteki tuple’lar yer değiştiriyor. (items[i - 1], items[i] = items[i], items[i - 1])

  • Bu işlemleri items’in uzunluğu kadar kez tekrarlıyoruz. Son olarak items içerisindeki her bir key ve itemi sırasıyla yerel_sozluk içerisine kaydediyoruz.

for key, item in items:
        yerel_sozluk.update({key: item})
5 Beğeni