Фон
Я хочу отсортировать наоборот, но не строго лексикографически, и тогда это становится еще более странным..: P
Причина в том, что проприетарное программное обеспечение анализирует каталоги именно так, как я здесь описываю, и я хочу скопировать это поведение.
Требования (в таком порядке)
- оба: совместимы с python2 и python3
- Обратный лексикографический
- самый короткий общий первый
Пример данных
Ниже приведен пример (случайно упорядоченных) входных данных для этого скрипта Python:
IA-test-PROD-me
ia-test-prod-me
ia-test-me-staging
ia-test-me
ia-test-STAGING-me
IA-test-me
IA-test-me-staging
ia-test-me-prod
IA-test-me-STAGING
IA-test-me-prod
IA-test-me-PROD
IA-test-STAGING-me
Как это должно выглядеть
Я храню это в списке, и мне нужно отсортировать его, чтобы он выглядел в конце так:
ia-test-me
ia-test-prod-me
ia-test-me-staging
ia-test-me-prod
ia-test-STAGING-me
IA-test-me
IA-test-me-staging
IA-test-me-prod
IA-test-me-STAGING
IA-test-me-PROD
IA-test-STAGING-me
IA-test-PROD-me
Код
Насколько я понял, sort()
и sorted()
- это стабильные функции, которые сортируются лексикографически. Но поскольку мне нужно выполнить все вышеперечисленные требования, я застрял на месте.
def sortLexo(input_list):
words = input_list.split()
words.sort(reverse=True)
for i in words:
print(i)
Проблема в том, что одного sort()
+ reverse=True
недостаточно, так как он не выполняет требование 3 (сначала самое короткое):
<-------------. should be placed here
ia-test-prod-me |
ia-test-me-staging /|\
ia-test-me-prod |
ia-test-me -------> wrong
ia-test-STAGING-me
<--------------- should be placed here
IA-test-me-staging |
IA-test-me-prod /|\
IA-test-me-STAGING |
IA-test-me-PROD |
IA-test-me --------> wrong
IA-test-STAGING-me
IA-test-PROD-me
Я играл с groupby
для сортировки по длине, но ничего не получаю (мой python kl не такой глубокий) .. :(
Я думаю, это очень легко сделать для тех, кто хорошо знает, как python ... любая помощь приветствуется!
ia-test-me
должно быть вышеia-test-prod-me
. Я думаю, что он должен быть под ним. - person Tim Ludwinski   schedule 11.11.2020