Сортировка сортировки Python «обрезанная по сдвигу»Python

Программы на Python
Ответить
Anonymous
 Сортировка сортировки Python «обрезанная по сдвигу»

Сообщение Anonymous »

Как мне пройти этот тест?

Код: Выделить всё

names = [
"cote",
"coté",
"côte",
"côté",
"ReasonE",
"Reason1",
"ReasonĔ",
"Reason Super",
"ReasonÅ",
"ReasonA",
"Reasona",
"Reasone",
"death",
"deluge",
"de luge",
"disílva John",
"diSilva John",
"di Silva Fred",
"diSilva Fred",
"disílva Fred",
"di Silva John",
]
expected = [
"cote",
"côte",
"coté",
"côté",
"death",
"deluge",
"de luge",
"di Silva Fred",
"diSilva Fred",
"disílva Fred",
"di Silva John",
"diSilva John",
"disílva John",
"Reason1",
"Reasona",
"ReasonA",
"ReasonÅ",
"Reasone",
"ReasonE",
"ReasonĔ",
"Reason Super",
]
assert sorted(names, key=some_sort_key) == expected

Попробовал несколько вариантов локали, например:

Код: Выделить всё

loc = icu.Locale("und-u-ka-shifted-kb-true")
c = icu.Collator.createInstance(loc)
assert sorted(names, key=c.getSortKey) == expected
Справочная информация:
Я пытаюсь воспроизвести (в Python) поведение сортировки из базы данных AWS Postgres. Лучшее, что я могу понять, это то, что у него есть собственные правила для пробелов/пунктуации, основанные на опции «обрезание по сдвигу», а также «обратный акцент» ( или [назад 2])
ICU, похоже, не поддерживает обрезку по сдвигу, и я не знаю, как еще я могу заставить их сортироваться «правильно».
Для получения дополнительных объяснений см. настройки сортировки и контекстную чувствительность.>

Подробнее здесь: https://stackoverflow.com/questions/790 ... ft-trimmed
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»