sorted(iterable[, key][, reverse])
--Une fonction qui renvoie une liste triée des éléments du premier argument ʻiterable` comme valeur de retour.
clé
est si l'élément d'itérable est un taple etc.
key = lambda x: x[1]
Vous pouvez spécifier le nombre d'éléments à utiliser comme référence. (La valeur par défaut est Aucun et comparer tel quel)reverse
Décroissant pour True, Croissant pour False (la valeur par défaut est False [Croissant])Site de référence: 2. Fonctions intégrées - Documentation Python3.5.1
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.
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']
--Facile à utiliser triés dans les fonctions intégrées
Recommended Posts