Wpis z mikrobloga

#python #naukaprogramowania
mam taką sobie listę:
a = ['2/1/31;access/hybrid',
'2/1/32;access/hybrid',
'2/1/9;access/hybrid',
'2/1/40;access/hybrid',
'2/1/4; check in config']
jak to posegregować by porty były numerycznie od najmniejszego? nie radze sobie z taką segregacją :(
  • 14
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@luukasek: Napisałem to przed ogarnięciem że tam musi rozdzielać to 2/1/4, tak jak pisze @venomik trzeba zwracać liczbę na podstawie tego stringa (możesz zrobić split na '2/1/32' po '/', potem for żeby przejść przez każdy element i zerowy element mnożyć przez 1000, pierwszy przez 100 i dodać wszystkie do siebie, wtedy będziesz mieć to jako id z odpowiednią wielkością do posortowania, zwracasz id)
  • Odpowiedz
@luukasek: No nie będzie działać po ten split('/') zwraca Ci 3 elementy, np. [2, 1, 32]. Teraz musisz połączyć te 3 elementy w jeden indeks po którym odbędzie się sortowanie, np. 2 * 1000 + 1 * 100 + 32 = 2132. Nie możesz po prostu zrobić konkatenacji, bo wtedy [2, 1, 3] będzie mniejsze od np. [1, 1, 32]: 213 < 1132, ale 2103 > 1132
  • Odpowiedz
dobra, w koncu miałem chwilę i to napisałem,
wiem że to nie kod #programista15k, niemniej dla mnie działa, i zrozumiałem o co chodzi w tym sortowaniu.
sorted daje mi format z którego jestem już wstanie wydłubac sobie to co potrzebuję i jest wg kolejności.
Dzieki za wytłumaczenia!

for x in
  • Odpowiedz