2017-05-21 7 views
0

Wenn ich habe diese Codezeile:Python - sortierte Liste

my_list = [3,4,7,2,1,6,8,2,1,4] 

ich diese Liste sortieren mit:

my_list.sort() 

Aber wenn ich will eine Produktliste erstellen, zum Beispiel: 2 Milch, 3 Kekse und so weiter, wenn ich diese Liste sortieren werde [3,2] Ich werde nicht in der Lage sein zu wissen, wie viele Milch ich kaufen sollte oder Kekse. Meine Frage ist, wie kann ich Wörterbuch oder Liste verwenden, so dass ich in der Lage wäre, die Liste/das Wörterbuch zu sortieren und auch den Produktnamen nach der Sortierung zu kennen.

Antwort

3

Nun hängt es von , wie Sie Ihre Produktliste darstellen. aber sagen wir stellen es als eine Liste von Tupes:

product_list = [(2,'milk'),(3,'cookie')] 

Jetzt können Sie mit einem key sortieren und setzen reverse auf True in absteigend zu sortieren Reihenfolge:

product_list.sort(reverse=True, key=lambda x: x[0]) 

So, jetzt sortieren wir auf die erste Element jedes Tupels und wir tun es in absteigender Reihenfolge. Dies führt zu:

>>> product_list 
[(3, 'cookie'), (2, 'milk')] 
3

Setzen Sie die Werte in Tupel und sie bleiben zusammen.

>>> L = [(3, 'cookies'), (2, 'milk')] 
>>> L 
[(3, 'cookies'), (2, 'milk')] 
>>> L.sort() 
>>> L 
[(2, 'milk'), (3, 'cookies')] 

Die Nummer muss zuerst kommt, als wenn Tupeln verglichen werden, etc., um die zweiten ersten das erste Element verglichen wird, dann wird diese lexikographische Reihenfolge aufgerufen.

+0

Gibt es eine Grenze für die Tupellänge für die Sortierung? Nur neugierig. – Prajwal

+1

@ Prajwal nah, solange das Tupel in Erinnerung bleiben kann. –

Verwandte Themen