Fassen Sie zusammen, wie Python-Sammlungstypen sortiert werden.
Die erste ist die Verwendung der Listenmethode. Die Sortiermethode nimmt keinen Rückgabewert an und schreibt die ursprüngliche Liste neu. Standardmäßig ist es in aufsteigender Reihenfolge sortiert.
>>> a = [8, 1, 5, 3, 6]
>>> a.sort()
>>> a
[1, 3, 5, 6, 8]
Wenn Sie in absteigender Reihenfolge sortieren möchten, setzen Sie das umgekehrte Schlüsselwort des Arguments auf True.
>>> a = [8, 1, 5, 3, 6]
>>> a.sort(reverse=True)
>>> a
[8, 6, 5, 3, 1]
Die zweite Methode ist die Verwendung der sortierten Funktion. Die sortierte Funktion gibt eine sortierte Liste zurück.
>>> a = [8, 1, 5, 3, 6]
>>> sorted(a)
[1, 3, 5, 6, 8]
Selbst mit der sortierten Funktion können Sie in absteigender Reihenfolge sortieren, indem Sie das umgekehrte Schlüsselwort auf True setzen.
>>> a = [8, 1, 5, 3, 6]
>>> sorted(a, reverse=True)
[8, 6, 5, 3, 1]
Python-Wörterbücher können nicht sortiert werden, da die Reihenfolge nicht garantiert ist. Wenn Sie ein Wörterbuch als Argument an die sortierte Funktion übergeben, wird nur eine sortierte Liste von Schlüsseln zurückgegeben.
>>> b = {'Matsui': 55, 'Ichiroh': 51, 'Kuroda': 18}
>>> sorted(b)
['Ichiroh', 'Kuroda', 'Matsui']
Die Methode items gibt ein verschachteltes Taple in der Liste zurück. Zu diesem Zeitpunkt ist es nach Schlüssel sortiert.
>>> b = {'Matsui': 55, 'Ichiroh': 51, 'Kuroda': 18}
>>> sorted( b.items() )
[('Ichiroh', 51), ('Kuroda', 18), ('Matsui', 55)]
Wenn Sie nach Wert sortieren möchten, verwenden Sie den Schlüsselparameter und die Lambda-Funktion.
>>> b = {'Matsui': 55, 'Ichiroh': 51, 'Kuroda': 18}
>>> sorted(b.items(), key=lambda x:x[1])
[('Kuroda', 18), ('Ichiroh', 51), ('Matsui', 55)]
Wenn Sie unter Beibehaltung der Struktur sortieren möchten, verwenden Sie OrderedDict. * Hinzugefügt / korrigiert, wie von @shiracamus hervorgehoben.
>>> 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']
Da Tapples unveränderliche Objekte sind, können sie nicht streng sortiert werden, sondern können mithilfe der Sortier- und Tupelfunktionen erreicht werden.
>>> d = (8, 1, 5, 3, 6)
>>> tuple( sorted(d) )
(1, 3, 5, 6, 8)
Bitte beachten Sie auch die Offizielle Seite.
Recommended Posts