web-dev-qa-db-fra.com

Trier les tuples en fonction du deuxième paramètre

J'ai une liste de n-uplets qui ressemblent à ceci:

("Person 1",10)
("Person 2",8)
("Person 3",12)
("Person 4",20)

Ce que je veux produire, c’est la liste triée par ordre croissant, par la deuxième valeur du tuple. Donc, L [0] devrait être ("Person 2", 8) après le tri. 

Comment puis-je faire ceci? Utiliser Python 3.2.2 Si cela aide.

76
user974703

Vous pouvez utiliser le paramètre key pour list.sort():

my_list.sort(key=lambda x: x[1])

ou légèrement plus vite

my_list.sort(key=operator.itemgetter(1))

(Comme pour tout module, vous aurez besoin de import operator pour pouvoir l'utiliser.)

148
Sven Marnach

Et si vous utilisez python 3.X, vous pouvez appliquer la fonction sorted à la liste mylist. Ceci est juste un ajout à la réponse donnée par @Sven Marnach ci-dessus.

# using *sort method*
mylist.sort(lambda x: x[1]) 

# using *sorted function*
sorted(mylist, key = lambda x: x[1]) 
1
Nde Samuel Mbah