Listeler üzerinden sıralandırma

Merhaba arkadaşlar ben bir dizinden çektim dosyaları listede topluyorum bunu liste içerisinde sıralandırmak istiyorum ancak istediğim sonucu alamıyorum çünkü büyük harfler dikkate alınmıyor sıralanırken kodlar aşağıda;

import os
def sırala(dizin):
   listes=[lis for lis in os.listdir()]
   listes.sort()
   
   for i in listes:
       print(i)

sırala(".")

Nasıl bir yol izleyebilirim bu duruma karşı ?

Kodunuzdaki listes=[lis for lis in os.listdir()] kısmını listes = os.listdir() olarak yazabilisiniz zaten, neden aynı işi uzatıyorsunuz ki.

Sizin aldığınız sıralama ne, istediğiniz sıralama ne? Örnek verir misiniz?

1 Beğeni

Ah evet dalgınlığıma geldi düzeltiyorum :slight_smile:

Alfabetik sıralama istiyorum küçük harfleri doğru sıralıyor ama büyük harfleri sıralamıyor.

Python sürümünüz ne ve büyük harflerin nasıl sıralanmasını istiyorsunuz? Ben de sort şu çıktıyı veriyor:

>>> liste = ["abc", "bca", "Abc", "Bca"]
>>> sorted(liste)
['Abc', 'Bca', 'abc', 'bca']
>>> liste.sort()
>>> liste
['Abc', 'Bca', 'abc', 'bca']

Python sürümüm 3.8.1.
Hemen izah edeyim;
listes = os.listdir()
listes.sort()
yapıyorum ancak
çıktı bu şekilde oluyor;

'DLLs', 'Dersler', 'Doc', 'Döküman', 'Lib', 'Python', 'Python.pdf', 
'Scripts', 'Tools', ' pycache', 'a.py', 'aaa.py', 'ads.py', 'as.py',
 'asd.py'
yani D a dan önce geliyor ben istiyorum ki a küçük olsa dahi büyük d(D)  den önce gelsin.

Anladım. Bu işinizi görür sanırım:

>>> listem = ['DLLs', 'Dersler', 'Doc', 'Döküman', 'Lib', 'Python', 'Python.pdf', 'Scripts', 'Tools', ' pycache', 'a.py', 'aaa.py', 'ads.py', 'as.py', 'asd.py']
>>> sorted(listem, key = lambda i: i.lower())
[' pycache', 'a.py', 'aaa.py', 'ads.py', 'as.py', 'asd.py', 'Dersler', 'DLLs', 'Doc', 'Döküman', 'Lib', 'Python', 'Python.pdf', 'Scripts', 'Tools']

Evet teşekkürler yardımınız için.

Burada lambda kullanmasanız da olur. Yani öyle;

sorted(listem, key=str.lower)
2 Beğeni

Evet, doğru.

1 Beğeni