Как отсортировать список имен по подстроке?

#python #python-3.x #sorting

Вопрос:

Допустим, у меня есть файл, содержащий:

 file1-01.json
file2-01.json
file3-01.json
file1-932.wav
file2-931.wav
file3-444.wav
file1-something.mp3
file2-something.mp3
file3-something.mp3
 

Как я могу превратить это в:

 file1-01.json
file1-932.wav
file1-something.mp3
file2-01.json
file2-931.wav
etc...
 

Код:

 final_list = []

for i in line:
    basename = i.split(-)[0]
    group = [s for s in line if basename in s]
    final_list.append(group)
 

Этот подход кажется немного неуклюжим, когда дело доходит до работы с огромным файлом. есть ли другой эффективный способ сделать это?

Комментарии:

1. Я предлагаю вам прочитать Инструкции по сортировке в документации.

Ответ №1:

 sorted_list = sorted(line, key=lambda x: x.split('-')[0])
 

Ответ №2:

Поскольку подстрока, которая у вас есть, является первой, просто используйте sorted ее, чтобы выполнить эту работу:

 print(sorted(my_list))
 

ВОЗВРАТ:

 ['file1-01.json',
 'file1-932.wav',
 'file1-something.mp3',
 'file2-01.json',
 'file2-931.wav',
 'file2-something.mp3',
 'file3-01.json',
 'file3-444.wav',
 'file3-something.mp3']