[Python] Trier les types de collection

Résumez comment trier les types de collection Python.

liste

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]

dictionnaire

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']

Taple

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

[Python] Trier les types de collection
[Python] Trier
Python #sort
python (3) Collection Dominer ORM
Tri à bulles en Python
Tri par classe Python
petite histoire de python
[Mémo] Tri de liste Python3
Feuille de triche de tri Python
Tri personnalisé en Python3
Organiser les types en Python
Trier les importations de modules Python par ordre alphabétique
Trier naturellement le chemin en Python
Ordre de tri des dict de base Python
Trier de gros fichiers avec python
Tri décroissant avec mongodb en python
collection d'extraits de python avec cinema4d
Les débutants en Python organisent des sortes de bulles
Collection de traitement d'image en Python
Trier par date en python
À propos de Python sort () et reverse ()
[Python] Traitement aléatoire (créer, sélectionner, trier)
[Python] Tri itérable selon plusieurs conditions
Python
Opération de collecte de type Scala en Python
Trier les gros fichiers texte en Python
[Python] Tri Starlin à une ligne avec 50 caractères
Trier
Générer une collection de première classe en Python
Nouveautés de Python 3.9 (2) - Tri des graphes non circulés dirigés en Python
Numéros, chaînes, types de listes Python (mémo d'apprentissage Python ①)
[Réinvention des roues] Tri de tournois à propulsion humaine [Python]
Convertir le type de date Python au format RFC822
Programmation scientifique Collection Petit Tech en Python
Mise en œuvre du tri Stuge dans Python 3 (tri à bulles et tri rapide)
[Python] J'ai recherché différents types! (Dactylographie)