First - Sort by Extension is a mistake?
sort this list by the file extension, The files with the same extension should be sorted by name.
then i think this case is wrong?
"sortbyext(['1.cad', '1.bat', '1.aa', '.bat']) == ['.bat', '1.aa', '1.bat', '1.cad']"
why ".bat" is front "1.aa"??