Буква «ё» в русском языке часто заменяется на «е» — по правилам это допустимо почти везде, кроме словарей и имён собственных. Из-за этого строки "все" и "всё" для дедупликатора технически разные строки, хотя многие носители языка воспринимают их как одно и то же слово, написанное по-разному.
Алфавитная сортировка против числовой
Алфавитная (лексикографическая) сортировка сравнивает строки символ за символом как текст. Из-за этого строка "10" окажется перед "9", потому что символ "1" лексикографически меньше "9" — сортировка не «понимает», что это числа. Числовая сортировка, напротив, парсит строки как числа перед сравнением и даёт ожидаемый порядок 9, 10, 11.
Регистр символов при сортировке
В большинстве систем заглавные буквы лексикографически предшествуют строчным (из-за кодировки), поэтому строка "Экран" может оказаться перед "apple" при чувствительной к регистру сортировке. Сортировка без учёта регистра сначала приводит строки к одному регистру для сравнения, сохраняя оригинальный регистр в результате.
Что дедупликация не считает одинаковым
Дедупликация удаляет повторяющиеся строки, сравнивая их посимвольно, а не по смыслу. Кроме очевидных пробелов и регистра, есть менее очевидная ловушка: «ё» и «е» — это разные символы Юникода, поэтому список с обоими вариантами написания одного слова не схлопнется в одну строку без ручной нормализации перед сравнением.
Зачем это нужно
- Убрать повторяющиеся записи из списка email-адресов или URL перед импортом.
- Отсортировать список версий или ID числово, а не текстово.
- Быстро сравнить два набора данных, приведя оба списка к одинаковому отсортированному виду.
Естественная сортировка (natural sort)
Естественная сортировка — компромисс между алфавитным и числовым подходами: она распознаёт последовательности цифр внутри строки как числа, а остальные символы сравнивает как текст. Благодаря этому file2.txt окажется перед file10.txt, хотя формально это строки, а не самостоятельные числа, — удобно для названий файлов или версий с текстовым префиксом.