Hoe sorteer ik een lijst van strings?
Wat is de beste manier om een alfabetisch gesorteerde lijst te maken in Python?
395
3
Wat is de beste manier om een alfabetisch gesorteerde lijst te maken in Python?
Basis antwoord:
Dit wijzigt je originele lijst (d.w.z. sorteert in-place). Om een gesorteerde kopie van de lijst te krijgen, zonder het origineel te wijzigen, gebruik je de
sorted()
functie:De voorbeelden hierboven zijn echter een beetje naïef, omdat ze geen rekening houden met locale, en een hoofdletter-gevoelige sortering uitvoeren. U kunt gebruik maken van de optionele parameter
key
om een aangepaste sorteervolgorde op te geven (het alternatief, het gebruik vancmp
, is een verouderde oplossing, omdat het meerdere keren moet worden geëvalueerd -key
wordt slechts eenmaal per element berekend).Dus, om te sorteren op basis van de huidige locale, rekening houdend met taal-specifieke regels (
cmp_to_key
is een helper-functie van functools):En tenslotte kunt u, indien nodig, een aangepaste locale opgeven om te sorteren:
Laatste opmerking: je zult voorbeelden zien van hoofdletter-ongevoelig sorteren die de
lower()
methode gebruiken - die zijn onjuist, omdat ze alleen werken voor de ASCII subset van karakters. Deze twee zijn fout voor alle niet-Engelse gegevens:Het is echt zo simpel :)
Nee,
list.sort()
is een generieke sorteer functie. Als je wilt sorteren volgens de Unicode regels, zul je'een aangepaste sorteersleutel functie moeten definiëren. Je kunt proberen de pyuca module te gebruiken, maar ik'weet niet hoe compleet die is.