sorted(iterable[, key][, reverse])
key = lambda x: x[1]
Sie können die Anzahl der Elemente angeben, die als Referenz verwendet werden sollen. (Der Standardwert ist Keine und vergleiche wie er ist)reverse
einen Bool-Wert. Absteigend für Wahr, Aufsteigend für Falsch (Standard ist Falsch [Aufsteigend])Referenzseite: 2. Dokumentation zu den integrierten Funktionen von Python3.5.1
Nach Erhalt der Dateinamenliste mit Glob etc. Ich möchte Dateien mit Dateinamen (test_file_1.txt, test_file_2.txt,… test_file_19.txt, test_file_20.txt) nach Nummer sortieren. Wenn Sie einfach versuchen zu sortieren
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']
Da wir von vorne beginnen, wollen wir, dass auf "1" "2" folgt, aber es ist "10". (In diesem Fall wird das Problem durch Ändern des Dateinamens behoben.) Hier verwenden wir Tapples, um dieses Problem zu lösen.
Der Vergleich von Taples in Python wird ab dem ersten Element gestartet. Wenn es zwei gibt, z. B. (a, b, c) (d, e, f), vergleichen Sie a und b, b und e und c und f in dieser Reihenfolge.
Wenn Sie den Schlüssel als (x, y), x als einstellige Zahl und y als Dateinamen festlegen, können Sie daher gut sortieren.
Geben Sie diesmal die Länge des Dateinamens in x ein und sortieren Sie.
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']
Recommended Posts