arkadaşlar iyi akşamlar
6220 1 asdsads
1498 6 dsadas
1498 7 dsads
5181 0 dsad
6220 3 dsadsads
6220 5 fdsfdsfds
1498 1 dsadsadsa
5181 2 fdsfdsfds
1498 2 fdsfdsfds
6220 6 fdsfdsf
5181 3 fdsfdsfd
6220 7 dsadsa
1498 4 dsadsad
1498 3 dasdsadsa
5181 1 dsadsadsad
6220 0 dasdsadsa
1498 5 fdsfdsf
6220 4 dsadsadsa
1498 0 dsadsads
6220 2 dsadsadand
elimde böyle bir txt dosyası var bunların hepsini listeye aktardım yapmam gereken şey bunları belli bir düzene göre sıralamak.
önce 0.indekslerine göre gruplandırmam sonrada 1.indekslerine göre sıralamam gerekiyor.bunu nasıl yapabilirim.Önemli olan şey sadece bu durumlarda değil input dosyası değiştrilse bile çalışması lazım sadece 3 farklı sayı değilde 10 farklı sayıda girilebilir yani.
Message 1
1498 0 dsadsad
1498 1 dsadsad
1498 2 dsadsad
1498 3 dsadsa
1498 4 ddasd
1498 6 dsdas.
Message 2
5181 0 dsadsadsa
5181 1 dsadsadsad
5181 2 dsadsadsad
5181 3 dsadsad
Message 3
6220 0 dsadsadsa
6220 1 dsadsad
6220 2 dsadsadsad
6220 3 dsadsad
6220 4 dsadsadsa
6220 5 dsadsadsa
6220 6 dsadsad
6220 7 dsadas
Python sıralama sorunu
9
●1.603
- 13-11-2017, 23:55:15
- 14-11-2017, 00:38:58hocam txt dosyasında yazdığım formatta satır satır yazılar var her satırın düzeni "1498 6 Where many paths and errands meet." şeklinde "where many,, kısmının bi önemi yok" bunları listeye aktardım liste içinde liste şeklinde her bir satır duruyor benim yapmam gereken şey listedeki 0.indekleri yani 1498 6220 5181 leri küçükten büyüğe sıralayıp daha sonrasındada 1.indeksleri 0 1 2 3 4 5 6,,, şeklinde küçükten büyüğe yazdırmak yani bildiğimiz listeleri ilk iki indekse göre küçükden büyüğe sıralamakGokaycan adlı üyeden alıntı: mesajı görüntüle
- 14-11-2017, 01:00:07Tek boyutlu liste yerine 2 boyutlu liste şeklinde yapsanız çözülür sorun.
Örnek olarak ilk girdi satırı için;
liste[0][0] = 6220
liste[0][1] = 1
liste[0][2] = asdsads
şeklinde bir atama yapıp ilk olarak liste[0][0] için sıralama yaparsınız. Daha sonra ise
if(liste[i][0] == liste[i+1][1])
kontrolü ile ikinci sütuna göre sıralama yapabilrsiniz kendi içinde. - 14-11-2017, 01:06:50deneyeyim hocam ama pek birşey canlanmadı kafamdaGokaycan adlı üyeden alıntı: mesajı görüntüle
- 14-11-2017, 01:26:17anladım hocam çok teşekkür ederim deneyeceğim.Gokaycan adlı üyeden alıntı: mesajı görüntüle
- 14-11-2017, 01:37:58
liste = [[234, 0, 'dsadsad'], [1498, 1, 'dsadsad'], [5498, 2, 'dsadsad'], [8498, 3, 'dsadsa'], [12498, 4, 'ddasd'], [1498, 6, 'dsdas']] print(sorted(liste, key=lambda x: x[1], y: y[2]))Bu kod alt listelerin ikinci elemanına göre sıralıyor. Ama sen farklı birşey istiyorsun sanırım. Bir fonksiyon yazılabilir belki, Örneğin 0 olan listeleri liste_0 diye bir listeye eklesin. 1 olanlar için de aynı şeyi yapsın. Şimdi altı liste olacak elimizde bunları yukarıdaki kodya sıralayalım sonra birleştirelim. Daha basit bir yol da vardır muhtemelen.
Edit: Hatta fonksiyon şunu yapabilir ikinci elemları örneğin 1 milyarla çarpsın sonra birinci elemanı eklesin, sonra sıralasın en son ikinci elemanı 0, 1, 2, gibi ilk haline getirsin. - 14-11-2017, 01:41:17hıcam dediğiniz gibi bir fonksiyon şart, birde size verdiğim değişkenler sabit kalmayacak, isterse input dosyasında indeks0 değeri için 9 10 tane farklı sayı indeks1 için 0 dan 100 e kadar sayı verip hem sıfır hemde 1 e göre sıralatabilirzembla adlı üyeden alıntı: mesajı görüntüle