Python da Sonsuz Alt Kategori Sıralama
RSS okuyucu yazılımım için kategorileme özelliği eklemek istiyordum ve bunun sınırsız alt kategori alabilecek şekilde kodlamak istiyordum, ama yazdığım kod sadece bir alt kategoriyi gösterecek şekilde iç içe geçmiş iki for döngüsünden ibaretti. Google da arama yaptığımda karşıma %90 Php, %10 aspx ve diğer dillerde örnekler çıkıyordu ve çoğu kendine has fonksiyon gibi özellikler içerdiğinden kodu anlayamıyordum. Sorumu bir kaç Python forumunda dile getirdim ve çeşitli cevaplar aldım. Yalnız bunlar ya sql koduyla hallediliyordu ya da karışık bir kod kümesiydi. Yine bir konu da php bilen bir arkadaşın örnek kod istemesi üzerine araştırma yaptığımda en kısa ve anlaşılır bir php koduna ulaştım.
Bu fonksiyonu Python'a uyarladım ve başarılı oldum.
Oldukça kısa bir kod. Hatta ilk defa php den çevirirken if bloğunu da eklemiştim, ama o kod olmadan da aynı işi görüyor. Tabii bu fonksiyon tek başına bir işe yaramaz. Veritabanında buna uygun bir tablo ve veri olması da gerekiyor. Mesela kategoriSirala() fonksiyonunda bulunan execute() ve cursor.fetchall() fonksiyonları sqlite3 modülünün parçası şu şekilde yazarsak fonksiyon hata vermez.
kategoriSirala() fonksiyonunun başına bu kodu eklerseniz hata vermez. Şimdi gerekli kategori tablosunu ve verileri ekleyelim.
bu kodu tablo_olustur değişkenine atayalım ve yukarıdaki koda göre tablomuzu oluşturup kategoriler ekleyelim.
Kodu çalıştırdığınızda tablo oluşturulur kategoriler girilir ve kategoriSirala() fonksiyonu çalışır. Eğer bu kodu yazarken hata yapmadıysam hatasız şekilde çalışacak ve çıktı şu şekilde olacaktır.
Sıralama doğru şekilde sıralandı... Yapacağınız uygulamaya göre bu fonksiyonu özelleştirebilirsiniz. Kodlar hata verirse yazdığınız kod ile hata çıktısını yorum olarak paylaşırsanız elimden geldiği kadarıyla yardımcı olurum. Bu arada bu konuyu Türkçe olarak bir tek ben yazmış oldum. En azından google aramalarında Python ile ilgili hiç bir sonuç çıkmadı.
Ufak bir bilgi daha ekleyeyim: Eğer bir konuyu google da arayınca çok çöplük konu varsa bing ve yandex sitelerini deneyin. Daha temiz sonuçlar karşınıza çıkacaktır.
Last updated
Was this helpful?