web-dev-qa-db-fra.com

Python liste de tri des structures de données par ordre alphabétique

Je suis un peu confus en ce qui concerne la structure de données en python; (), [] et {}. J'essaie de trier une liste simple, probablement parce que je ne peux pas identifier le type de données que je ne parviens pas à trier.

Ma liste est simple: ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']

Ma question est de savoir quel type de données il s’agit et comment trier les mots par ordre alphabétique?

136
icypy

[] désigne un liste , () désigne un Tuple et {} désigne un dictionnaire . Vous devriez jeter un oeil au tutoriel officiel Python , car ce sont les bases de la programmation en Python.

Ce que vous avez est une liste de chaînes. Vous pouvez le trier comme ceci:

In [1]: lst = ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']

In [2]: sorted(lst)
Out[2]: ['Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim', 'constitute']

Comme vous pouvez le constater, les mots commençant par une lettre majuscule ont la préférence sur ceux commençant par une lettre minuscule. Si vous souhaitez les trier indépendamment, procédez comme suit:

In [4]: sorted(lst, key=str.lower)
Out[4]: ['constitute', 'Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim']

Vous pouvez également trier la liste dans l'ordre inverse en procédant comme suit:

In [12]: sorted(lst, reverse=True)
Out[12]: ['constitute', 'Whim', 'Stem', 'Sedge', 'Intrigue', 'Eflux']

In [13]: sorted(lst, key=str.lower, reverse=True)
Out[13]: ['Whim', 'Stem', 'Sedge', 'Intrigue', 'Eflux', 'constitute']

Remarque: Si vous utilisez Python 3, alors str est le type de données correct pour chaque chaîne contenant texte lisible par l'homme. Toutefois, si vous devez toujours utiliser Python 2, vous pouvez utiliser des chaînes unicode ayant le type de données unicode dans Python 2, et non str. Dans un tel cas, si vous avez une liste de chaînes unicode, vous devez écrire key=unicode.lower au lieu de key=str.lower.

201
pemistahl

Python a une fonction intégrée appelée sorted , qui vous donnera une liste triée à partir de toutes les fonctions que vous pouvez lui donner (telle qu'une liste ([1,2,3]); un dict ({1:2,3:4}, bien qu'il renvoie simplement une liste triée des clés, un jeu ({1,2,3,4) ou un tuple ((1,2,3,4))).

>>> x = [3,2,1]
>>> sorted(x)
[1, 2, 3]
>>> x
[3, 2, 1]

Les listes ont également une méthode sort qui effectue le tri à la place (x.sort () ne renvoie aucun mais modifie l'objet x).

>>> x = [3,2,1]
>>> x.sort()
>>> x
[1, 2, 3]

Les deux prennent également un argument key, qui devrait être un appelable (fonction/lambda) que vous pouvez utiliser pour changer le type de tri.
Par exemple, pour obtenir une liste de (key,value)- paires à partir d'un dict trié par valeur, vous pouvez utiliser le code suivant:

>>> x = {3:2,2:1,1:5}
>>> sorted(x.items(), key=lambda kv: kv[1])  # Items returns a list of `(key,value)`-pairs
[(2, 1), (3, 2), (1, 5)]
29

Vous pouvez utiliser la fonction intégrée sorted.

print sorted(['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue'])
9
Fatih Erikli

Vous traitez avec une liste python et le tri est aussi simple que cela.

my_list = ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']
my_list.sort()
8
Bryan

ListName.sort() le triera par ordre alphabétique. Vous pouvez ajouter reverse=False/True entre crochets pour inverser l'ordre des éléments: ListName.sort(reverse=False)

4
Crafter0800
>>> a = ()
>>> type(a)
<type 'Tuple'>
>>> a = []
>>> type(a)
<type 'list'>
>>> a = {}
>>> type(a)
<type 'dict'>
>>> a =  ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue'] 
>>> a.sort()
>>> a
['Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim', 'constitute']
>>> 
3
Abhijeet Rastogi