Waardes met wisselend hoofdlettergebruik in een lijst sorteren met Python

🐍 Wist je dat de sort-method binnen Python hoofdletters prioriteert bij de sortering?

Stel je hebt een lijst met namen. Sommige namen hebben een hoofdletter en andere namen niet.

namen = [‘Alice’, ‘Barry’, ‘annie’]

Je wilt deze namen alfabetisch sorteren met behulp van de sort-method. Het probleem is echter dat de sort-method hoofdletters prioriteert bij het sorteren. Het resultaat van namen.sort() is zoals onderstaand:

[‘Alice’, ‘Barry’, ‘annie’]

Om dit te voorkomen kun het volgende keyword gebruiken: key=str.lower. Dit ziet er als volgt uit: namen.sort(key=str.lower). Het resultaat is zoals onderstaand:

[‘Alice’, ‘annie’, ‘Barry’]

In het kader van waarom makkelijk doen als het moeilijk kan, kun je dit ook oplossen met een for-loop. Dit is een goede oefening om te kijken of je de for-loop enigszins onder de knie hebt. Oplossing met for-loop waarbij meteen elke naam een hoofdletter krijgt:

namen = ['Alice', 'Barry', 'annie']

for i in range(len(namen)):

    namen[i] = namen[i].lower()

    namen[i] = namen[i].title()

Hierbij pak je de lengte van de lijst met behulp van de functie len(). Vervolgens maak je hier een range van met behulp van de functie range(). Het resultaat is een opeenvolging van nummers van 0 tot 3. Je wijst hierna steeds een van de nummers toe aan de variabele “i”, beginnend met de 0. Je geeft elke waarde in de lijst eerst kleine letters m.b.v. de functie lower(), en vervolgens geef je de eerste letter van de naam een hoofdletter m.b.v. de functie title(). Het resultaat is als volgt:

[‘Alice’, ‘Barry’, ‘Annie’]

Leave Comment

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *