• 13-11-2017, 23:55:15
    #1
    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
  • 14-11-2017, 00:24:52
    #2
    Sorunuzu tam anlayamadım biraz daha detaylı anlatırsanız belki yardımcı olabilirim
  • 14-11-2017, 00:38:58
    #3
    Gokaycan adlı üyeden alıntı: mesajı görüntüle
    Sorunuzu tam anlayamadım biraz daha detaylı anlatırsanız belki yardımcı olabilirim
    hocam 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ıralamak
  • 14-11-2017, 01:00:07
    #4
    Tek 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:50
    #5
    Gokaycan adlı üyeden alıntı: mesajı görüntüle
    Tek 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.
    deneyeyim hocam ama pek birşey canlanmadı kafamda
  • 14-11-2017, 01:18:21
    #6
    Yaptığımız şey her satırdaki veriyi 3 parçaya bölüm bunları Nx3 matriste tutmak hocam. Farkındayım sözel olarak bir şeyi anlatmak biraz zor. Vize dönemim olmasa yazıp yollardım hocam ama malesef anca bu şekilde yardımcı olabildim.
  • 14-11-2017, 01:26:17
    #7
    Gokaycan adlı üyeden alıntı: mesajı görüntüle
    Yaptığımız şey her satırdaki veriyi 3 parçaya bölüm bunları Nx3 matriste tutmak hocam. Farkındayım sözel olarak bir şeyi anlatmak biraz zor. Vize dönemim olmasa yazıp yollardım hocam ama malesef anca bu şekilde yardımcı olabildim.
    anladım hocam çok teşekkür ederim deneyeceğim.
  • 14-11-2017, 01:37:58
    #8
    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:17
    #9
    zembla adlı üyeden alıntı: mesajı görüntüle
    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]))
    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.
    hı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ıralatabilir