Cортировка списка стринг по последним "цифрам"

Главная Форумы Python Синтаксис и родные библиотеки Python Cортировка списка стринг по последним "цифрам"

  • В этой теме 13 ответов, 4 участника, последнее обновление 7 лет назад сделано Denis.
Просмотр 14 сообщений - с 1 по 14 (из 14 всего)
  • Автор
    Сообщения
  • #7046 Score: 4
    Legantmar
    Хранитель
    475 pts

    может уже было, а может нет
    nums – входной лист
    для Dynamo нужно заменить print на OUT=

    на выходе
    [(‘e2’, ‘ab3’, ‘d4’, ‘cd5’, ‘b7’, ‘f12’, ‘b15’), (‘e2’, ‘ab3’, ‘cd5’, ‘b7’, ‘f12’)]

    #7049 Score: 0
    Denis
    Участник
    3 pts

    Только зашел на форум чтобы посмотреть как сортировать в питоне многоуровневый список – а тут уже ответ есть :-)

    #7050 Score: 2
    Legantmar
    Хранитель
    475 pts

    Иногда бывает нужно сначала сортировать по алфавиту, а затем по цифрам. (да еще без учета регистра, т.е. независимо от того большие или маленькие буквы):

    на выходе
    [[‘elm0’, ‘Elm2’, ‘elm9’, ‘elm10’], [‘alm12’, ‘Elm11’, ‘elm13’]]

    также работает и со вложенными списками вида (но это не точно)):
    InList = [[‘elm0’, ‘elm10’, ‘Elm2’, ‘elm9’, [‘olm0′,’olm10′,’olm1′,’Olm2′,’olm9’]],[‘elm13′,’alm12′,’Elm11’]]
    p.s. вложенный список должен быть в конце

    #7066 Score: 0

    Подскажите, как в Динамо добавить список к этому скрипту?

    #7069 Score: 0
    Legantmar
    Хранитель
    475 pts

    заменить строчку 2 на InList = IN[0]
    а 27 на OUT = OutList

    #7146 Score: 0
    Denis
    Участник
    3 pts

    А можно как-то использовать второй скрипт если список уже в 4 уровня и его нужно сохранить? На выходе получить 5-уровневый список отсортированный по 2 уровню.

    Скрипт и так сортирует по 2 уровню но принимает только список с 3 уровнями…

     

    #7147 Score: 0
    txt
    Модератор
    86 pts

    чтобы избавиться от вложенности надо указывать нулевой индекс, т.е.

    если list=[[1,2,3 ]], то применив OUT=list[0] , получим list=[1,2,3 ]

    если list=[[[1,2,3 ]]], то применив OUT=list[0][0] , получим  list=[1,2,3 ]

    ну и ноды flatten уже все знают

     

     

    #7148 Score: 0
    Denis
    Участник
    3 pts

    Так мне не нужно избавляться. На вход я хочу подать список в 4 уровня уже отсортированный и в таком виде (все предыдущие уровни) нужно сохранить. А на выходе будет 4 или 5 не важно (как ты написал “ну и ноды flatten уже все знают”) :-)

    Но скрипт ругается и не хочет принимать ничего кроме 3 уровней… или я не вьезжаю… (((

    С питоном к сожалению не дружу от слова совсем…

    #7149 Score: 0
    Denis
    Участник
    3 pts

    Не знаю что я на клацал – но ошибки уже нет … правда скрипт на последнем подходе (когда лист становится 4 уровня) все рамно не сортирует … эх …

    #7150 Score: 0
    txt
    Модератор
    86 pts

    может динаме не нравится ошибка в слове “групировка”… 0_О XD всем хочется иногда покапризничать…

    скиньте сюда файлик rvt (оставьте только то что нужно, если файл большой ) и dyn

    #7153 Score: 0
    Denis
    Участник
    3 pts
    #7156 Score: 0
    txt
    Модератор
    86 pts

    Вообщем я мельком глянул , не ручаюсь за адекватный результат – проверьте сами

    надо переплетение сменить и пару строк в коде :

     

    #7157 Score: 0
    Denis
    Участник
    3 pts

    Не мы видимо немного друг друга не понимаем… В кружочке вы поставили “@L2” – превратили отсортированный 4 уровненный список в 3 уровненный … при это питон и без изменений хорошо справлялся с 3 уровненными списками – но мне нужно оставить 4 уровня (зачем я до этого дважды сортировал и группировал чтоб потом убить эти группы…)

    К сожалению такой способ не подходит…

    #7158 Score: 0
    Denis
    Участник
    3 pts

    Вы натолкнули меня на правильную идею. Сплющить список перед питоном, отсортировать а потом выровнять до необходимого мне в конце блока… вот как-то так… в конце вышел список в 5 уровней (4 было до этого + еще 1 новый).

    Спасибо – свежий взгляд подсказал идею – или просто совпадение :-)))

Просмотр 14 сообщений - с 1 по 14 (из 14 всего)
  • Для ответа в этой теме необходимо авторизоваться.