Heim > Artikel > Backend-Entwicklung > Python-Sortierung sort() und sorted()
Anwendungsbeispiele:
1. Geben Sie eine Reihenfolge nach dem Alphabet aus
2. Sortieren Sie mehrere Felder von Datensätzen usw.
Häufig verwendete Sortierfunktionen:
sort()
sorted()
Vergleich:
1.sorted() hat einen größeren Anwendungsbereich
sorted(iterable[ , cmp[ , key[, reverse]]])
s.sorted([cmp[, key[, reverse]]])
Beispiel:
> >> ; personen = [{'name':'Jon','age': 32}, {'name':'Alan','age': 50}, {'name': 'Bob', 'age ':23 }]
>>> sorted(persons, key=lambda x: (x['name'], -x['age']))
[{'age': 50 , 'name': 'Alan'}, {'age': 23, 'name': 'Bob'}, {'age': 32, 'name': 'Jon'}]
sortiert( ) kann jedes iterierbare Objekt verwendet werden, sort() funktioniert im Allgemeinen auf der Liste
>>> a = (1,2,4,2,3)
>>> a.sort( )
Traceback (letzter Aufruf zuletzt):
Datei „
AttributeError: „Tuple“-Objekt hat kein Attribut „sort“
> ;>> sorted(a)
[1, 2, 2, 3, 4]
2 gibt die sortierte Liste zurück Die ursprüngliche Liste bleibt unverändert, sort() ändert direkt die ursprüngliche Liste.
sort() verbraucht weniger Speicher und ist effizienter, da die ursprüngliche Liste nicht kopiert werden muss
>>> ',3, 7,'n']
>>> sortiert(a)
[1, 3, 7, '1', 'a', 'n']
> >> a
['1', 1, 'a', 3, 7, 'n']
>>> a.sort()
>>> a
[1, 3, 7, '1', 'a', 'n']
3. Für die Funktionen sort() und sorted() die Eingabe Parameterschlüssel ist größer als der Parameter cmp Hohe Effizienz. Die von cmp übergebene Funktion wird während des gesamten Sortiervorgangs mehrmals aufgerufen, was teuer ist; der Schlüssel wird nur einmal für jedes Element verarbeitet.
>>> from timeit import Timer
>>> Timer(stmt="sorted(xs,key=lambda x:x[1])",setup="xs =range(100);xs=zip(xs,xs);").timeit(10000)
0.35391712188720703
>>> : cmp(a[1],b[1]))" ,setup="xs=range(100);xs=zip(xs,xs);").timeit(10000)
0.4931659698486328
4.sorted() kann sortieren eine Vielzahl von Datenstrukturen
Wörterbuch:
Telefonbuch-Telefonnummern nach numerischer Größe sortieren
> ;>> Bob':'9345','Carol':'5834'}
>>> from Operator import itemgetter
> >> (1))
>>> sorted_pb
[('Carol', '5834'), ('Linda', '7750'), ('Bob', '9345')]
Mehrdimensionale Liste:
Mehrfeldsortierung von Noten und Noten
>>> vom Operator import itemgetter
>>> gameresult = [[ 'Bob',95.00,'A'],['Alan',86.0,'C'],['Mandy',82.5,'A'] ,['Rob',86,'E']]
>>> sorted(gameresult, key=itemgetter(2, 1))
[['Mandy', 82.5, 'A'] , ['Bob', 95.0, 'A'], ['Alan ', 86.0, 'C'], ['Rob', 86, 'E']]
Gemischte Liste im Wörterbuch:
>>> :['M',7],
... 'Zhang': ['E',2],
... ' Wang':['p',3],
.. . 'Du':['C',2]}
>>> from Operator import itemgetter
>>> ; ):operator.itemgetter(1)(v))
[('Zhang', ['E', 2]), ('Du' , ['C', 2]), ('Wang', [ 'p', 3]), ('Li', ['M', 7])]
Gemischtes Wörterbuch in Liste:
Mehrere Schlüsselwerte sortieren Bewertung und Name
>>> gameresult = [{"name":"Bob","wins":10, "losses":3,"rating":75.00},
... {"name": "David", "wins":3, "loses":5, "rating":57.00}]
>>> vom Operator import itemgetter
>> ;> sorted(gameresult,key=itemgetter("rating","name"))
[{'wins': 3, 'rating' : 57.0, 'name': 'David', 'loss': 5 }, {'wins': 10, 'losses': 3, 'name': 'Bob', 'rating': 75.0}]
> ;>>
Für mehr Python-Sortierung () und sorted() verwandte Artikel, achten Sie bitte auf die chinesische PHP-Website!