Это решение будет использовать ваш языковой стандарт вашей системы, а в качестве бонуса он будет сортировать и другие персонажи в соответствии с текущей локалью (поместит «ü» после «u» в немецкий язык и т. д.).
from locale import setlocale, strxfrm, LC_ALL
import operator
# call setlocale to init current locale
setlocale(LC_ALL, "")
def locale_keyfunc(keyfunc):
def locale_wrapper(obj):
return strxfrm(keyfunc(obj))
return locale_wrapper
list_of_dicts.sort(key=locale_keyfunc(operator.itemgetter("name")))
Это, конечно, использует, что сортировка локали - это «естественный» вид пользовательского интерфейса, который вы хотите эмулировать с помощью .lower ().
Я поражен тем, что модуль locale
python неизвестен и не используется, он наверняка является важным компонентом в приложении, которое я пишу (переведен на несколько языков, но языковой модуль важен для того, чтобы даже получить модуль one вправо. Пример: V 'и' W ', так что вам нужно их сопоставить. locale
делает все это для вас.). В локали POSIX
(не по умолчанию) это вернет сортировку «a» после «Z».