Résumez comment trier les types de collection Python.
La première consiste à utiliser la méthode list. La méthode de tri ne prend pas de valeur de retour et réécrit la liste d'origine. Par défaut, il est trié par ordre croissant.
>>> a = [8, 1, 5, 3, 6]
>>> a.sort()
>>> a
[1, 3, 5, 6, 8]
Si vous souhaitez trier par ordre décroissant, définissez le mot-clé reverse de l'argument sur True.
>>> a = [8, 1, 5, 3, 6]
>>> a.sort(reverse=True)
>>> a
[8, 6, 5, 3, 1]
La deuxième méthode consiste à utiliser la fonction triée. La fonction triée renvoie une liste triée.
>>> a = [8, 1, 5, 3, 6]
>>> sorted(a)
[1, 3, 5, 6, 8]
Même avec la fonction triée, vous pouvez trier par ordre décroissant en définissant le mot-clé reverse sur True.
>>> a = [8, 1, 5, 3, 6]
>>> sorted(a, reverse=True)
[8, 6, 5, 3, 1]
Les dictionnaires Python ne peuvent pas être triés car l'ordre n'est pas garanti. La transmission d'un dictionnaire en tant qu'argument à la fonction triée renvoie uniquement une liste triée de clés.
>>> b = {'Matsui': 55, 'Ichiroh': 51, 'Kuroda': 18}
>>> sorted(b)
['Ichiroh', 'Kuroda', 'Matsui']
La méthode items renvoie un taple imbriqué dans la liste. À ce stade, il est trié par clé.
>>> b = {'Matsui': 55, 'Ichiroh': 51, 'Kuroda': 18}
>>> sorted( b.items() )
[('Ichiroh', 51), ('Kuroda', 18), ('Matsui', 55)]
Si vous souhaitez trier par valeur, utilisez le paramètre clé et la fonction lambda.
>>> b = {'Matsui': 55, 'Ichiroh': 51, 'Kuroda': 18}
>>> sorted(b.items(), key=lambda x:x[1])
[('Kuroda', 18), ('Ichiroh', 51), ('Matsui', 55)]
Si vous souhaitez trier tout en conservant la structure, utilisez OrderedDict. * Ajouté / corrigé comme indiqué par @shiracamus.
>>> b = {'Matsui': 55, 'Ichiroh': 51, 'Kuroda': 18}
>>> b
{'Ichiroh': 51, 'Matsui': 55, 'Kuroda': 18}
>>> from collections import OrderedDict
>>> c = OrderedDict(sorted(b.items(), key=lambda x:x[1]))
>>> c
OrderedDict([('Kuroda', 18), ('Ichiroh', 51), ('Matsui', 55)])
>>> c.values()
[18, 51, 55]
>>> c.keys()
['Kuroda', 'Ichiroh', 'Matsui']
Puisque les tapples sont des objets immuables, ils ne peuvent pas être triés strictement, mais ils peuvent être obtenus en utilisant les fonctions tri et tuple.
>>> d = (8, 1, 5, 3, 6)
>>> tuple( sorted(d) )
(1, 3, 5, 6, 8)
Veuillez également vous référer à la page officielle.
Recommended Posts