Для сравнения строк используется лексикографический порядок . Лексикографическое упорядочение строк использует номер кодовой точки Unicode для упорядочивания отдельных символов, но в пустой строке нет символов, поэтому вы не можете сделать ord('')
Так почему же кажется, что пустая строка быть самым маленьким персонажем?
l = ['1', '2', 'f', 'F', 'z', ' ', '+', '@', '-', '']
sorted(l)
#['', ' ', '+', '-', '1', '2', '@', 'F', 'f', 'z']