Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
so so solution in Clear category for Sort by Extension by aafedotov
from typing import List
def sort_by_ext(files: list):
files_list = []
for file in files:
dot = file.rfind('.')
if dot <= 0 or dot == len(file) - 1:
files_list.append([file, ''])
continue
files_list.append([file[:dot], file[dot+1:]])
files_list = sorted(files_list, key=lambda x: x[0])
files_list = sorted(files_list, key=lambda x: x[1])
return [x[0]+'.'+x[1] if x[1] else x[0] for x in files_list]
if __name__ == '__main__':
print("Example:")
print(sort_by_ext(['1.cad', '1.bat', '1.aa']))
# These "asserts" are used for self-checking and not for an auto-testing
assert sort_by_ext(['1.cad', '1.bat', '1.aa']) == ['1.aa', '1.bat', '1.cad']
assert sort_by_ext(['1.cad', '1.bat', '1.aa', '2.bat']) == ['1.aa', '1.bat', '2.bat', '1.cad']
assert sort_by_ext(['1.cad', '1.bat', '1.aa', '.bat']) == ['.bat', '1.aa', '1.bat', '1.cad']
assert sort_by_ext(['1.cad', '1.bat', '.aa', '.bat']) == ['.aa', '.bat', '1.bat', '1.cad']
assert sort_by_ext(['1.cad', '1.', '1.aa']) == ['1.', '1.aa', '1.cad']
assert sort_by_ext(['1.cad', '1.bat', '1.aa', '1.aa.doc']) == ['1.aa', '1.bat', '1.cad', '1.aa.doc']
assert sort_by_ext(['1.cad', '1.bat', '1.aa', '.aa.doc']) == ['1.aa', '1.bat', '1.cad', '.aa.doc']
print("Coding complete? Click 'Check' to earn cool rewards!")
Jan. 17, 2022