Quelle est la meilleure façon de créer une liste alphabétiquement triée en Python?Comment trier une liste de chaînes?
Répondre
réponse de base:
mylist = ["b", "C", "A"]
mylist.sort()
Ceci modifie votre liste d'origine (à savoir sortes en place). Pour obtenir une copie de la liste triée, sans modifier l'original, utilisez la fonction sorted()
:
for x in sorted(mylist):
print x
Cependant, les exemples ci-dessus un peu naïve, car ils ne prennent pas en compte locale, et effectuer un cas tri sélectif Vous pouvez tirer parti du paramètre facultatif key
pour spécifier l'ordre de tri personnalisé (l'alternative, en utilisant cmp
, est une solution obsolète, car elle doit être évaluée plusieurs fois - key
n'est calculée qu'une seule fois par élément).
Donc, pour trier selon les paramètres régionaux en cours, en prenant des règles spécifiques à la langue en compte (cmp_to_key
est une fonction d'aide de functools):
sorted(mylist, key=cmp_to_key(locale.strcoll))
Et enfin, si vous avez besoin, vous pouvez spécifier un custom locale pour le tri:
import locale
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') # vary depending on your lang/locale
assert sorted((u'Ab', u'ad', u'aa'),
key=cmp_to_key(locale.strcoll)) == [u'aa', u'Ab', u'ad']
Dernière note: vous verrez des exemples de tri insensible à la casse qui utilisent la méthode lower()
- ceux qui sont incorrectes, car ils ne fonctionnent que pour le sous-ensemble ASCII de caractères. Ces deux sont mauvais pour les données non-anglais:
# this is incorrect!
mylist.sort(key=lambda x: x.lower())
# alternative notation, a bit faster, but still wrong
mylist.sort(key=str.lower)
'mylist.sort (key = str.lower)' est plus rapide. – jfs
Bon point. Je vais laisser mon exemple actuel tel quel, car il est probablement plus facile pour un débutant de voir ce qui se passe, mais je garderai cela à l'esprit dans le futur. –
Si quelqu'un est curieux, les performances de list.sort() peuvent être trouvées [ici] (http://stackoverflow.com/questions/1517347/about-pythons-built-in-sort-method) –
list.sort()
Il est vraiment aussi simple que cela :)
Ne fonctionne pas sur Python 3.6 avec des nombres. Utilisez 'trié (liste)' à la place. – Dmitry
Mais comment ces règles de tri spécifique à la langue de la poignée? Cela prend-il en compte les paramètres régionaux?
Non, list.sort()
est une fonction de tri générique. Si vous souhaitez trier selon les règles Unicode, vous devez définir une fonction de clé de tri personnalisée. Vous pouvez essayer d'utiliser le module pyuca, mais je ne sais pas à quel point c'est complet.
Il est également intéressant de noter la fonction sorted()
:
for x in sorted(list):
print x
Ceci retourne une nouvelle version d'une liste triée sans changer la liste originale.
La bonne façon de trier des chaînes est:
import locale
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') # vary depending on your lang/locale
assert sorted((u'Ab', u'ad', u'aa'), cmp=locale.strcoll) == [u'aa', u'Ab', u'ad']
# Without using locale.strcoll you get:
assert sorted((u'Ab', u'ad', u'aa')) == [u'Ab', u'aa', u'ad']
L'exemple précédent de mylist.sort(key=lambda x: x.lower())
fonctionnera bien pour des contextes ASCII uniquement.
On suppose s = "ZWzaAd"
Pour trier ci-dessus chaîne la solution simple sera inférieur à un.
print ''.join(sorted(s))
S'il vous plaît utiliser la fonction tri() dans python3
items = ["love", "like", "play", "cool", "my"]
sorted(items2)
- 1. Comment trier un tableau de chaînes?
- 2. Comment trier une liste liée en SQL?
- 3. Comment analyser rapidement une liste de chaînes
- 4. Trier une liste avec qsort?
- 5. Trier chronologiquement une liste d'avis
- 6. Python - trier une liste de listes imbriquées
- 7. Modèles D: trier une liste des types
- 8. Asp.net: Comment trier une liste déroulante ayant des doublons?
- 9. Comment puis-je déterminer si une liste est juste une chaîne ou une liste de chaînes?
- 10. Comment puis-je rejoindre une liste de chaînes dans specman?
- 11. Comment détecter les répétitions dans une liste de chaînes?
- 12. Comment trier cette liste en Python?
- 13. Comment puis-je détecter les sous-chaînes communes dans une liste de chaînes
- 14. Meilleur endroit pour trier une liste de tâches
- 15. Trier une liste de nombres saisis par l'utilisateur dans MIPS
- 16. Trier par une option forcée en haut de la liste
- 17. WPF Liste Trier sur Charger
- 18. Trier la liste alternative C#
- 19. comment trier la liste de FileInfo dans IronPython
- 20. Comment lire la liste des chaînes
- 21. Comment trier une liste lorsque le critère de tri nécessite une variable supplémentaire? C++
- 22. Meilleure façon de randomiser une liste de chaînes en Python
- 23. Trier la matrice de chaînes en tant qu'int
- 24. C++ trier un vecteur ou une liste chaînée
- 25. Trier la liste déroulante en utilisant Javascript
- 26. Trier la liste <DateTime> décroissant
- 27. Comment trier la liste générique Asc ou Desc?
- 28. C# tri des chaînes VS tri des chaînes Oracle
- 29. Convertir la liste de chaînes en liste int
- 30. Ordre SQL Par liste de chaînes?
Utilisez 'locale' et pour les méthodes de classement de chaîne pour trier naturellement selon les paramètres régionaux en cours. – u0b34a0f6ae