Rozwiązany

Sortowanie polskich słów — "Łódź" ląduje na końcu

SamPriceAutor

sorted(["Łódź", "Kraków", "Lublin"]) daje Łódź po Lublinie, ale też po wszystkim innym.

9

Komentarze 4

Zaloguj się, żeby dołączyć do dyskusji.

Zaloguj się Załóż konto
  1. ElaKowalska Rozwiązanieodpowiedzi: 2

    Domyślne sortowanie porównuje kody znaków Unicode, a "Ł" ma kod większy niż wszystkie litery bez znaków. Do sortowania po polsku można użyć locale:

    import locale
    locale.setlocale(locale.LC_COLLATE, "pl_PL.UTF-8")
    miasta = sorted(miasta, key=locale.strxfrm)
    7
    1. SamPriceAutorodpowiedzi: 1

      Działa lokalnie, w edytorze w przeglądarce dostaję błąd locale.

      0
      1. ElaKowalska

        W przeglądarce nie ma polskiego locale. Tam możesz zrobić własny klucz, np. zamieniający ł na l z małym przesunięciem, ale lokalnie locale to najprostsze rozwiązanie.

        6
    2. EmmaCodes

      Albo biblioteka PyICU, jeśli kiedyś będziesz robić to na poważnie.

      5