2016-06-12 9 views
0

Hier ist ein Diktat von Haustieren und wie viele von ihnen.Python - Drucke Artikel von einem Diktat nach Wert sortiert

{"Birds" : 2, "Cats" : 3, "Dogs" : 4} 

Ich mag die Einzelteile durch größte Zahl des gleichen Tieres auf die kleinste Zahl des gleichen Tieres oder umgekehrt sortieren drucken.

Ausgang Wunsch:

('Dogs', 4) 
('Cats', 3) 
('Birds', 2) 

Und

('Birds', 2) 
('Cats', 3) 
('Dogs', 4) 

Wie dies geschehen könnte?

Ich möchte nichts importieren.

Antwort

0

Verwendung des eingebaut in sorted Funktion mit einer speziellen Ranking-Funktion und ein reverse=True Argumente:

for item in sorted(dict.items(), key=lambda x: x[1], reverse=True): 
    print(item) 

Ein Schlüssel von lambda x: -x[1] sollte auch (ohne reverse Argument) arbeiten.

0

mit Lambda-Ausdruck x[1] steht für Werte, x[0] für Schlüssel in Schlüssel-Wert-Paar aus einem Wörterbuch.

sorted(d.items(), key=lambda x: x[1], reverse=True) 
sorted(d.items(), key=lambda x: x[0]) 

ohne Lambda ausdr, operator.itemgetter macht das Gleiche:

from operator import itemgetter 

sorted(d.items(), key=itemgetter(1), reverse=True) 
sorted(d.items(), key=itemgetter(0)) 
0

Für die Zwecke des Verstehens von einem Anfänger Sicht manchmal ist es besser, mehr Code zu schreiben, um dies zu erreichen. Da Wörterbücher nicht sortiert werden können, können Sie jedes Schlüssel- und Wertepaar verwenden und eine Liste mit einer einfachen Funktion zurückgeben.

mydict = {"Birds" : 2, "Cats" : 3, "Dogs" : 4} 
def sortDict(dictionary): 
    sorted_values = sorted(dictionary.values()) 
    sorted_keys = sorted(dictionary.keys()) 
    #sorted_values.reverse() 
    #sorted_keys.reverse() 
    for key, value in zip(sorted_keys, sorted_values): 
     print(key, value) 
sortDict(mydict) 

Entfernen Sie einfach die Zeichen, um das Ergebnis umzukehren.

Verwandte Themen