[Python] Tri itérable selon plusieurs conditions

Fonction intégrée: trié

sorted(iterable[, key][, reverse])

--Une fonction qui renvoie une liste triée des éléments du premier argument ʻiterable` comme valeur de retour.

Site de référence: 2. Fonctions intégrées - Documentation Python3.5.1

Tri multi-conditions

Pourquoi avez-vous voulu trier selon plusieurs conditions

Après avoir obtenu la liste des noms de fichiers avec glob etc. Je veux trier les fichiers avec les noms de fichiers (test_file_1.txt, test_file_2.txt,… test_file_19.txt, test_file_20.txt) par numéro. Si vous essayez simplement de trier

sort_test_1.py


>>> import random
>>> file_names = ["test_file_{}.txt".format(num) for num in range(1, 21)]
>>> random.shuffle(file_names)
>>> sorted(file_names)
['test_file_1.txt', 'test_file_10.txt', 'test_file_11.txt', 
 'test_file_12.txt', 'test_file_13.txt', 'test_file_14.txt',
 'test_file_15.txt', 'test_file_16.txt', 'test_file_17.txt',
 'test_file_18.txt', 'test_file_19.txt', 'test_file_2.txt',
 'test_file_20.txt', 'test_file_3.txt', 'test_file_4.txt',
 'test_file_5.txt', 'test_file_6.txt', 'test_file_7.txt',
 'test_file_8.txt', 'test_file_9.txt']

Puisque nous allons commencer par le début, nous voulons que «2» suive «1», mais ce sera «10». (Dans ce cas, changer le nom du fichier résoudra le problème) Ici, nous utilisons des tapples pour résoudre ce problème.

Comparaison des taples

La comparaison des taples en Python est lancée à partir du premier élément. S'il y en a deux, par exemple (a, b, c) (d, e, f), comparez a et b, b et e, et c et f dans cet ordre.

Par conséquent, si vous définissez la clé comme (x, y), x comme numéro à un chiffre et y comme nom de fichier, vous pouvez bien trier.

Cette fois, mettez la longueur du nom de fichier dans x et triez.

sort_test_2.py


>>> file_names = ["test_file_{}.txt".format(num) for num in range(1, 21)]
>>> random.shuffle(file_names)
>>> sorted(file_names, key=lambda x: (len(x), x))
['test_file_1.txt', 'test_file_2.txt', 'test_file_3.txt',
 'test_file_4.txt', 'test_file_5.txt', 'test_file_6.txt',
 'test_file_7.txt', 'test_file_8.txt', 'test_file_9.txt',
 'test_file_10.txt', 'test_file_11.txt', 'test_file_12.txt',
 'test_file_13.txt', 'test_file_14.txt', 'test_file_15.txt',
 'test_file_16.txt', 'test_file_17.txt', 'test_file_18.txt',
 'test_file_19.txt', 'test_file_20.txt']

Résumé

--Facile à utiliser triés dans les fonctions intégrées

Recommended Posts

[Python] Tri itérable selon plusieurs conditions
Trier par date en python
[Python] Trier
Python #sort
Trier en spécifiant les conditions dans CASTable
Lors de la spécification de plusieurs clés dans le tri python
[Python] Qu'est-ce qui est hérité par l'héritage multiple?
Blender 2.9, Python, sélectionnez plusieurs maillages par coordonnées
Trier par pandas
Trier les éléments d'un tableau en spécifiant des conditions
[Python] Trier la table par sort_values (pandas DataFrame)
[Python] Comment trier les instances par variables d'instance
Python> Trier par nombre et trier par alphabet> Utiliser trié ()
Trier la liste des tuples en Python en spécifiant l'ordre croissant / décroissant de plusieurs clés
Jugement des nombres premiers par Python
Mémo de visualisation par Python
Traitement de la communication par Python
Tri à bulles en Python
[Python] Créer plusieurs répertoires
Tri par classe Python
[Mémo] Tri de liste Python3
Feuille de triche de tri Python
Réponse de Beamformer par python
Tri personnalisé en Python3
[Python] Trier les types de collection
Python> Obtenir une liste de fichiers dans plusieurs répertoires> Utiliser glob | Trier par heure de modification
[Python] Envoyer gmail avec python: envoyez un par un avec plusieurs fichiers image en pièce jointe
Expression de régression multiple en Python
Reconnaissance vocale par Python MFCC
Trier par valeur de valeur de type dict
API Web EXE par Python
Programme de formation des nouveaux arrivants par Python
Paramétrage par le configurateur python
Trier naturellement le chemin en Python
Ordre de tri des dict de base Python
Pin python géré par conda
Spécifier plusieurs index de liste (Python)
Trier de gros fichiers avec python
Installer plusieurs versions de Python
Tri décroissant avec mongodb en python
Extraction de mots-clés par MeCab (python)
Séparez les nombres par 3 chiffres (python)
Modèle de commutation de Markov par Python
Les débutants en Python organisent des sortes de bulles
[Rust / Python] Condition aux limites périodique
bases de python: conditions et itérations
Traitement d'image par python (Pillow)
Décompressez plusieurs fichiers compressés (Python)
Python lancé par des programmeurs C
Évitez les boucles multiples en Python
Trier par date de modification du fichier
Jugement de la plateforme (OS) par Python
À propos de Python sort () et reverse ()
Trier les noms de fichiers obtenus par Python glob dans l'ordre numérique
Lorsque vous souhaitez trier une liste multidimensionnelle sur plusieurs lignes
Le tri du tableau de tuple peut être accéléré en spécifiant une clé (Python)