Список сортировки игнорирует специальные символы, поэтому подчеркивает после пропуска Дана и проверяет следующий алфавит (r против i).
Это не так - Sort List
никоим образом не изменяет членов и не пропускает никаких фрахтователей. Когда он запустился, он сравнил 'i'
с '_'
и (каким-то образом) решил, что 'i' с меньшим символьным кодом, чем '_'
.
Фактически, Sort List
- это просто оболочка над методом sort()
в Python.
Я запустил ваш список источников в реплее, и он вышел отсортированным ожидаемым образом - «Dan_» перед «Daniel _»:
>>> a = ["Kevin_richard", "Dan_ronald", "Daniel_white", "David_jacob", "eddie_bacon"]
>>> a
['Kevin_richard', 'Dan_ronald', 'Daniel_white', 'David_jacob', 'eddie_bacon']
>>> a.sort()
>>> a
['Dan_ronald', 'Daniel_white', 'David_jacob', 'Kevin_richard', 'eddie_bacon']
Есть еще кое-что тревожное - при обычной сортировке «Кевин» должен стоять перед «Эдди» (заглавные латинские буквы с кодами перед маленькими), но это не вывод в теле вашего вопроса. На самом деле, ваш вывод выглядит как отсортированный без учета регистра, что ключевое слово не может сделать наверняка.
Что заставляет меня думать, что это еще не все:
- Вы уверены, что список образцов, который вы вставили, точно такой же, как список, с которым вы работаете в своем коде? Это может быть с хартиями Юникода, которые похожи на латинские (например, кириллица, у многих из них есть коллизии в визуальном восприятии), которые не были вставлены в вопрос как есть.
- Есть ли какие-либо пробельные символы вокруг исходных значений? Если да, это повлияет на сортировку (и может объяснить случай 'Эдди') - удалите их перед выполнением сортировки, если вы хотите сравнить только имена.
- Пример кода все вы делаете, чтобы получить этот результат?
- Наконец - я удалил числа перед значениями - они бы сильно повлияли на сортировку, но нужно спросить - их нет в исходных значениях, верно?