Heim  >  Artikel  >  Backend-Entwicklung  >  Python-Sortierung sort() und sorted()

Python-Sortierung sort() und sorted()

高洛峰
高洛峰Original
2017-02-13 17:29:581598Durchsuche

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 „“, Zeile 1, in
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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn